ShellCode的编写就是将函数或变量在内存中的间接地址改为函数或变量在内存中的直接地址,直接调用!

 

MessageBox函数为例进行讲解如下

 

新建shellcode.cpp

如何编写一个shellcode_shellcode

 

编写代码如下:

如何编写一个shellcode_shellcode_02

运行结果:

如何编写一个shellcode_shellcode_03

VC代码转换成汇编指令:

如何编写一个shellcode_shellcode_04

如何编写一个shellcode_shellcode_05

如何编写一个shellcode_汇编指令_06

如何编写一个shellcode_二进制数_07

内存数据图:

如何编写一个shellcode_汇编指令_08

函数的真实地址找到之后,修改代码如下:

如何编写一个shellcode_数据_09

将以上汇编指令转换成二进制数据:

如何编写一个shellcode_shellcode_10

如何编写一个shellcode_二进制数_11

内存数据图:

如何编写一个shellcode_shellcode_12

0x0040103C~0x00401049之间的二进制数据复制出来

 

如下:

 

6A 00 6A 00 6A 00 6A 00 B8 1E FD 0B 75 FF D0

 

最终shellcode代码:

如何编写一个shellcode_汇编指令_13

 

运行结果:

如何编写一个shellcode_二进制数_14