2.1 程序结构
根据查出的程序信息得出,程序中99%进行了加壳保护,但是是一种未知的壳
根据程序的入口地址,可以知道程序的入口地址处于后面的.text区段中
而且在程序中存在两个.text、.rdata、.data区段,应该是加壳人,直接复制了程序的前三个区段,并添加到程序区段的后面。
2.2 OD动调
使用OD打开程序后即可发现一开始即是jmp跳转指令,执行一步以后可以发现,到达执行指令位置
可以看到一开始就是一条push指令,可以考虑使用ESP定律法去寻找OEP
执行指令直至ESP发生改变,即push指令执行之后,跟随ESP地址的数据,设置硬件断点
如图所示,右键单击ESP的值
,选择数据窗口跟随
,在数据窗口中,选择第一个数据,右键单击第一个数据->断点->硬件写入->DWORD
然后通过菜单栏 调试->硬件断点
可以查看自己下的硬件断点,以及删除自己所下的硬件断点,如下图所示;
执行完上述操作后,通过快捷键F9
继续运行程序即可到达程序的原始入口点OEP;
2.3 dump
与第一个实验同理,通过OD插件OllyDump插件dump保存文件
这里需要注意的一点就是,在dump文件之前,先删除自己所下的硬件断点;
使用Import REC工具检查输入表是否需要修复
如下图,得知,输入表不需要修复。
不选择重建输入表,dump保存文件即可得到一个可执行的脱壳文件。
2.4 区段处理
将存储壳代码、数据和资源的去掉清除就好了,没啥可说,清除也可以,影响不大。
使用LordPE工具直接清除就好了