逆向-在PE文件空白区域构造ShellCode代码

今天,把上周的逆向作业做了。其中的一道题“在PE文件空白区域构造ShellCode代码”花了比较长的时间才写出来。在这里,我整理一下思路。题目如下:
逆向-在PE文件空白区域构造ShellCode代码
首先,我们要找到MessageBoxA的地址。我选择通过ollydbg来找,通过bp MessageBoxA来定位到哪一行。然后下断点,F9运行,查看具体地址如下:
逆向-在PE文件空白区域构造ShellCode代码
逆向-在PE文件空白区域构造ShellCode代码
可知地址为76D710AO,这是我们真正要跳转的地方。
使用PETool打开“飞鸽传书”,由
逆向-在PE文件空白区域构造ShellCode代码
可算出在文件中入口点为00046000 。在Winhex中往上翻,发现有大量的空白位置可以写入代码。我决定从004050C0这一行开始,由E8计算公式算出E8的位置为7692BFD3,在PETool中查看OEP为000441EC,接着计算出E9的地址为FFFFF10A。
逆向-在PE文件空白区域构造ShellCode代码
逆向-在PE文件空白区域构造ShellCode代码
计算公式如下:
逆向-在PE文件空白区域构造ShellCode代码
最后修改一下OEP的值,使它指向shellcode,如下:
逆向-在PE文件空白区域构造ShellCode代码
整个题目大概就完成了。中间添加的代码你随意添加就好(当然,也不能过于随意了)。有不对的地方欢迎大家指正哦!