使用OD打开 发现不能使用esp定律了 我们可以通过特征去找到OEP(入口点)
直接运行程序 发现是FF15方式调用函数 就可以确定是VS的程序
vs程序大致分成两种 vs20xx (特征函数:GetSystemTimeAsFileTime)和 vc++6.0(特征函数:GetVersion) 在这两个函数上下断点
直接运行程序 程序断下 发现并不是我们的模块调用的此函数 继续运行直到可返回我们的模块位置
返回自己代码的模块调用的函数以后,在向上一层应该就是我们的call ?? ?? ?? ?? jmp
vs release版的OEP的特征 下断点重新运行
直接dump程序
这时候dump出来的程序是没办法运行的所以需要 ImpREC工具去修复导入表 获取导入表后发现导入了一个dll 所以我们需要用OD检查下这个程序的导入表(随便找一个函数调用 call的地址就是导入表)
检查后发现他的导入表的dll间隔是利用FFFFFFFF隔开的 正常使用00000000隔开
impREC这个工具就是遇到无效的API的时候就会停止搜索 所以看到FFFFFFFF以后就停止搜索了 我们需要手动的把f更改为0 填充后在dump一下
在次使用impREC扫描一下 函数就都出来了 在转存到文件
最后程序成功运行 也就脱壳成功