|
破文作者: machenglin
----------------------------------------------------------------------------------------------------------- 在对付Armadillo保护方式脱壳脚本中,首先推荐fly大侠的系列脚本,请提前收集备用,别问我那里能下载。 从OD菜单--->插件--->ODbgScript--->运行脚本--->Armadillo V4.0-V4.4.dll.osc。
-----------------------------------------------------------------------------------------------------------二、用ArmInline修复 1、用ArmInline V0.96可以自动找到Enable Import Table Elimination,但需要手动定位IAT的起始、结束Size,否则不能 全部修复。 2、用ArmInline V0.96不能自动找到Enable Strategic Code Splicing,需要手动定位。 Alt+M 到内存窗口,根据: 大小=00010000~00020000之间,类型=Priv,访问=RWE,初始访问=RWE。 找到这里,这就是Enable Strategic Code Splicing区段。 之。 注意,别特别相信ArmInline工具,要自己确认一下,很多问题可能就是使用工具不当造成!
----------------------------------------------------------------------------------------------------------- 注意:在ArmInline修复后,用LordPE转存、Import修复。必须同一次进行,不能用未ArmInline修复前或前次用LordPE转存的dumped.exe来用Import修复!
----------------------------------------------------------------------------------------------------------- 在OD中单独测试脱壳dll,能准确停在入口点,F9运行,初始化完成。 一般dll脱壳后,必须和主程序联调,才能知道脱壳是否成功。改脱壳dll为程序规定文件名,运行主文件,测试各功能菜单,OK,成功。实际上这个dll是有关“狗”的调用。看来这个dll的重定位表没有加密,不再修复重定位表。修复后的dumped_.dll字节为920K,加壳版为576K,原版为176K。优化dumped_.dll文件,应该基本和原版的176K接近。 1、用FixRes转存资源段rsrc区段,NewRVA=00030000,既原text1的虚拟地址,字节大小:FileAlignment=1000,转存为rsrc.bin。
2、用LordPE打开dumped_.dll--->区段--->mackt--->把段保存到磁盘。
3、dumped_.dll文件优化前为11个区段。留下前面text、rdata、data、reloc四个区断,消除区段text1后面全部区段。
4、用WinHex打开消除多余区段的dll文件。
回到文件头,找到Armadillo壳标志“SR”,5352h,修改为00。
找到PE头,向下,选定text1至mackt区段名--->编辑--->填入选块--->用16进制填充--->OK。
保存文件。 5、用LordPE打开WinHex修复的文件,从磁盘载入资源段rsrc区段,修改VSize=mackt-rsrc=E2000-30000=B2000。
6、从磁盘载入资源段mackt区段,不重建PE。 最后测试:文件字节=205K,编程语言=Microsoft Visual C++ 6.0 DLL。
|