找回密码
 注册
搜索
热搜: 回贴

脱壳技术,爱的初体验之Armadillo2.0加壳的记事本,Armadillo

2010-1-30 18:19| 发布者: admin| 查看: 81| 评论: 0|原作者: 韩菱纱


脱壳技术,爱的初体验之Armadillo2.0加壳的记事本,Armadillo
2008年06月23日 星期一 下午 04:01
【脱文标题】 爱的初体验之Armadillo2.0加壳的记事本



【脱文作者】 weiyi75[Dfcg]



【作者邮箱】 weiyi75@sohu.com



【作者主页】 Dfcg官方大本营



【使用工具】 Ollydbg,WinHEX,Bw2000(冲击波),Loadpe



【破解平台】 Win98



【软件名称】 Armadillo2.0加壳的记事本



【下载地址】 本地下载



【软件简介】 穿山甲早期版本加壳的记事本



【软件大小】 132KB



【加壳方式】 Armadillo 2.00 beta3 -> Silicon Realms Toolworks [重叠]



【保护方式】 标准方式加壳



【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:



--------------------------------------------------------------------------------



【破解内容】



运行加密的Nopepad.exe,在同一文件夹中产生一个Nopepad.tmp0,大小和没加壳的记事本一样大,把它复制一份,命名为Nopepad1.exe。用PEedit对比分析未加密的记事本,发现除了代码段被做了手脚,其余区段的没有变化,资源,引入表都正确。



OD载入Nopepad1.exe,发现401000-404FD3 处 大小 3FD4 的代码全部换成了POP EAX 的无用代码。



ALT M 打开内存镜像



内存镜像,项目 12

地址=00401000

大小=00004000 (16384.) //知道了代码段内存中是 从 401000-405000

Owner=NOTEPAD1 00400000

区段=.text

包含=code

类型=Imag 01001002

访问=R

初始访问=RWE



现在要从加密程序的临时文件进程中Dump出代码段内容,Loadpe无法Dump进程,因为程序没有陷入死循环是无法DUMP的。运行Winhex,选定进程Nopepad.tmp0,编辑内存,位置-转移到偏移量 401000 ,看到这时可不是58等无用代码了,和未加壳的记事本相同位置代码相同。选定401000-405000处的全部代码



Alt G 401000 选块开始



Alt G 405000 先看看,我们看到404FD2以后的全是为00的数据,不用复制,于是



Alt=G 404FD2 选块结尾



Ctrl C 复制选定内容



然后打开代修复的Nopepad1.exe,位置-转移到偏移量 1000



Ctrl B 写入复制的数据,切记不能是Ctrl V,保存文件。



现在脱壳基本完成,还差最后一步,现在脱壳程序入口点不对,是不能运行的,虽然我知道记事本的OEP是4010cc,但换个程序是多少?



简单一点解决,那就是BW2000(冲击波)



首先执行BW2000,按track,再执行NOTEPAD.EXE, 在BW2000中显示0040A53F,等到NagBox出现,按OK后会再出现一个地址004010cc 这是Nopepad.tmp0的OEP,才是我们要的。



注意修正入口时不能用PEedit修正,只能用LoadPE修正,顺便重建PE优化一下文件大小。否则无法运行,害我想了两个小时不知道是怎么回事。



另一种死循环脱壳法,不是很好用,但脱壳成功了,我看到介绍方法都是Trw2000和Softice之类的,今天用OD配合LoadPe脱壳成功。



OD载入加密的程序,命令行下断点。



BP ResumeThread



F9运行程序。



确定没有注册的NAG。



77E66F37 > 55 PUSH EBP //中断在这里

77E66F38 8BEC MOV EBP,ESP

77E66F3A 8D45 08 LEA EAX,DWORD PTR SS:[EBP 8]

77E66F3D 50 PUSH EAX

77E66F3E FF75 08 PUSH DWORD PTR SS:[EBP 8]

77E66F41 FF15 9813E677 CALL DWORD PTR DS:[<&NTDLL.NtResumeThrea>; ntdll.ZwResumeThread

77E66F47 85C0 TEST EAX,EAX

77E66F49 0F8C 732F0300 JL KERNEL32.77E99EC2

77E66F4F 8B45 08 MOV EAX,DWORD PTR SS:[EBP 8]

77E66F52 5D POP EBP

77E66F53 C2 0400 RETN 4



Ctrl F9返回程序领空。



00406C18 . FF15 34004100 CALL DWORD PTR DS:[<&KERNEL32.ResumeThre>; \ResumeThread

00406C1E BA 01000000 MOV EDX,1 //返回到这里,修改这一句。



00406C1E - EB FE JMP SHORT NOTEPAD.00406C1E

00406C20 90 NOP 这不就等于Softice里面的jmp eip

00406C21 90 NOP

00406C22 90 NOP



程序陷入死循环。



00406C23 . 85D2 TEST EDX,EDX

00406C25 . 0F84 28010000 JE NOTEPAD.00406D53

00406C2B . 8D85 8CF9FFFF LEA EAX,DWORD PTR SS:[EBP-674]

00406C31 . 50 PUSH EAX ; /pExitCode

00406C32 . 8B0D 70514100 MOV ECX,DWORD PTR DS:[415170] ; |

00406C38 . 51 PUSH ECX ; |hProcess => 000000CC (window)

00406C39 . FF15 40004100 CALL DWORD PTR DS:[<&KERNEL32.GetExitCod>; \GetExitCodeProcess

00406C3F . 81BD 8CF9FFFF>CMP DWORD PTR SS:[EBP-674],103

00406C49 . 74 23 JE SHORT NOTEPAD.00406C6E

............................................................



接着用Loadpe在进程里选择Nopepad.tmp0,完整脱壳。Loadpe载入脱壳的文件发现入口不对,修改成10cc保存,文件50.6k比没加壳的文件要小,正常运行。



第一次接触ARM,查阅了几篇文章,这里一一感谢诸位前辈指点,感觉文中有很多不足,还请各位大侠不吝指教。


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 23:25 , Processed in 0.220393 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部