Loading... # 分析软件 ## 工具 查壳软件:Die、lordPE 分析软件:x32Dbg、OD 运行平台:Windows x32 # 查壳 可以看到是自定义壳 ![image.png](http://www.irohane.top/usr/uploads/2021/03/1159327592.png) ## 开始脱壳 可以看到不能使用ESP定律了,那么换一种方法,使用模块调用先判断是什么编译器。 首先运行到用户区【直接F9跑】 ![image.png](http://www.irohane.top/usr/uploads/2021/03/3140385194.png) 右键找到模块间调用 ![image.png](http://www.irohane.top/usr/uploads/2021/03/3098934064.png) 查看所有模块间的调用 ![image.png](http://www.irohane.top/usr/uploads/2021/03/1346954888.png) FF15 大概率 VC 6.0 或者易语言 直接在GetVersion 下断点。看是哪边的堆栈调用即可 ![image.png](http://www.irohane.top/usr/uploads/2021/03/2464521932.png) 在GetVersion设置硬件断点,重新加载。 ![image.png](http://www.irohane.top/usr/uploads/2021/03/3876899351.png) 查看调用者堆栈,如果不是用户区F9跳过即可 ![image.png](http://www.irohane.top/usr/uploads/2021/03/192307527.png) 看到40开头大概率用户区 ![image.png](http://www.irohane.top/usr/uploads/2021/03/647362560.png) 找到OEP,但是看到调用函数的地方被加密了点进去看一下 ![image.png](http://www.irohane.top/usr/uploads/2021/03/3695950677.png) 解密调用函数。 可以看到call 的地方跳过了 E9 ,那么我们也跟着代码填充E9看看原型。 ![image.png](http://www.irohane.top/usr/uploads/2021/03/2852198426.png) 可以看到,多出了代码,对接下来的花指令也操作。 ![image.png](http://www.irohane.top/usr/uploads/2021/03/1991638008.png) ![image.png](http://www.irohane.top/usr/uploads/2021/03/4146080830.png) 把新的EIP设置到进入函数的位置,往下走发现,将加密后的函数地址,解密放入堆栈调用ret 到目标函数 ![image.png](http://www.irohane.top/usr/uploads/2021/03/707641522.png) 那么我们知道解密了,就需要看在哪个地方对IAT进行了加密。在上层找到FF15的地址进行下硬件断点。之后重新运行。 ![image.png](http://www.irohane.top/usr/uploads/2021/03/2929246695.png) 之后运行,注意观看内存。 在4385B9处发现对应代码,首先获取需要的地址。之后对其异或 0x15151515,然后申请空间进行拼装,之后把地址放入写好的花指令模板内即可。 ![image.png](http://www.irohane.top/usr/uploads/2021/03/2664925808.png) 绕过花指令。修改汇编【我们找到了OEP只需要修复IAT即可】 在GetProcAddress这里下断点。来到第一次获取地址的地方,【IAT还未被污染】 把加密的代码给NOP掉然后把放入IAT的代码放上边,申请空间也可以nop【那段空间申请了但是并没有放入注册表相当于垃圾内存】 ![image.png](http://www.irohane.top/usr/uploads/2021/03/900195603.png) 推荐使用x96DBG 脱壳加修复。 ![image.png](http://www.irohane.top/usr/uploads/2021/03/3855326361.png) 最后修改:2021 年 03 月 07 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏
1 条评论
兄弟写的非常好 https://www.cscnn.com/