脱这个壳:
先用PEid扫一下看看有没有壳,发现什么都没扫到,再用LordPE看看,发现果然有壳:
那么就用OD打开吧:
这是进去之后的样子,看到了PUSHAD/PUSHFD,用ESP定律,单步到OEP的位置,在47A036 call的地方给ESP下硬件执行断点后f9运行:
刚好在POPFD执行完的地方停下来,单步到OEP的位置:
两个跳转之后就找到了OEP的位置:
看眼,IAT已经被加密:
在IAT表的第一个位置处下一个4字节的硬件写入断点:
然后重新运行,找到这里,记录下地址:
这个时候就可以开始写脚本了吗?不行,why?写脚本需要找到获取IAT和写入IAT,OEP这三个的位置,在这里下个断点之后选择run 跟踪
然后选择跟踪步入,当左上角的跟踪两个字变了,就说明跟踪完毕,点击那三个…寻找正确的eax寄存器,找到获取IAT地址的函数:
找这种7开头看起来比较正常的,然后CTRL+G进去看看是不是想要的:
发现是想要的,再回去,双击一下,记录下这里的偏移1911:
CTRL+G搜索一下virtualAlloc的地址,把这个库函数运行完,按下CTRL+FN+F9之后运行到返回的地方,然后单步一下,出去就是存放基址的地方了,此时记录下他eax寄存器的值,这个值存的就是偏移的基址啦
然后可以开始写脚本了,所有的地址都获取到了!
(GetModuleHandleA是进入IAT表的位置?)