首页
社区
课程
招聘
[原创]ASPr 2.1x不完全脱壳 + 动态调试注册码
发表于: 2007-3-6 15:41 5032

[原创]ASPr 2.1x不完全脱壳 + 动态调试注册码

2007-3-6 15:41
5032
【文章标题】: 【原创】ASPr 2.1x不完全脱壳 + 动态调试注册码
【文章作者】: HappyTown
【软件名称】: IParmor 5.51
【下载地址】: happytown.ys168.com的共享文件夹内
【加壳方式】: ASPr 2.1x
【编写语言】: Delphi 5
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  1)请务必先阅读爱暴(loveboom)的大作:穿透eXeCryptor 2.2x 保护体系(年终篇)
  2)设置OllyDbg_Execryptor为just-in-time debugger,设置完后关闭之;
  3)OllyICE载入IParmor后:
     a. 按Shift + F9共33次(因为第34次就跑飞了)来到这里:
  
        0100FAA5    >mov     dword ptr [eax], 855CCAEF
        0100FAAB    >pop     dword ptr fs:[0]
        0100FAB1    >add     esp, 4
        0100FAB4    >sub     eax, -51
        0100FAB7    >or      eax, 4B
        0100FABA    >pop     eax
  
     b. 按Alt + M打开内存镜像,在
  
          地址      大小      属主    区段    包含
        00401000  00189000  Iparmor           代码
  
        这一行上右键->“设置内存访问断点”,Shift + F9后来到这里:
  
        00588FB4    55               push    ebp
        00588FB5    8BEC             mov     ebp, esp
        00588FB7    B9 04000000      mov     ecx, 4
        00588FBC    6A 00            push    0
        00588FBE    6A 00            push    0
        00588FC0    49               dec     ecx
        00588FC1  ^ 75 F9            jnz     short 00588FBC
        00588FC3    51               push    ecx
        00588FC4    53               push    ebx
        00588FC5    56               push    esi
        00588FC6    57               push    edi
        00588FC7    B8 CC865800      mov     eax, 005886CC
        00588FCC    E8 9FE4E7FF      call    00407470
  
        然后删除内存断点。
  
     c. 打开PE Tools->dump full,保存为dumped.exe,关闭OllyICE;
  
     d. 用PEiD上一步的dumped.exe,得知程序为Delphi语言编写;
  
     e. 用Resource Hacker打开dumped.exe,RC数据->TFORM7,查看到:
  
        Caption = 'RegNow'
        OnClick = SpeedButton1Click
  
     d. 用DeDe打开dumped.exe,在Procedures中我们找到如下信息:
  
        Unit Name    Class Name      |  Events               RVA       Hint
        Unit7        TForm7          |  SpeedButton1Click    005876A8  18
  
        由此得知“注册”按钮的事件地址为005876A8,记下它,后面要用到。
  
  4)运行IParmor,点击“注册软件”,输入用户名称 happy 和注册码 7654321,点击“注册”,提示注册失败,点击“确定”,不要关闭这个窗口,让它留着;
  5)运行Procexp,杀掉Iparmor除最上面的主线程以外的其它线程,然后在Procexp主界面中右击Iparmor->调试;
  6)在调试器窗口中居然什么都没有显示,不用管它,在下面的命令行中输入 bp 5876A8,点击“注册”按钮。呵呵,断下来了:
        005876A8    PUSH EBP
        005876A9    MOV EBP,ESP
        005876AB    MOV ECX,26
        005876B0    PUSH 0
        005876B2    PUSH 0
        005876B4    DEC ECX
        005876B5    JNZ SHORT Iparmor.005876B0
        005876B7    PUSH EBX
        005876B8    PUSH ESI
        005876B9    MOV EBX,EAX
        005876BB    XOR EAX,EAX
        005876BD    PUSH EBP
        005876BE    PUSH Iparmor.00587993
        005876C3    PUSH DWORD PTR FS:[EAX]
        005876C6    MOV DWORD PTR FS:[EAX],ESP
        005876C9    LEA EDX,DWORD PTR SS:[EBP-8]
        005876CC    MOV ESI,DWORD PTR DS:[EBX+2E0]
        005876D2    MOV EAX,ESI
        005876D4    CALL Iparmor.00437BB8
        005876D9    MOV EAX,DWORD PTR SS:[EBP-8]             ; name
        005876DC    LEA EDX,DWORD PTR SS:[EBP-4]
        005876DF    CALL Iparmor.004096B8
        005876E4    MOV EDX,DWORD PTR SS:[EBP-4]             ; name
        005876E7    MOV EAX,ESI
        005876E9    CALL Iparmor.00437BE8
        005876EE    LEA EDX,DWORD PTR SS:[EBP-10]
        005876F1    MOV ESI,DWORD PTR DS:[EBX+2D8]
        005876F7    MOV EAX,ESI
        005876F9    CALL Iparmor.00437BB8
        005876FE    MOV EAX,DWORD PTR SS:[EBP-10]            ; sn
        00587701    LEA EDX,DWORD PTR SS:[EBP-C]
        00587704    CALL Iparmor.004096B8
        00587709    MOV EDX,DWORD PTR SS:[EBP-C]             ; sn
        0058770C    MOV EAX,ESI
        0058770E    CALL Iparmor.00437BE8
        00587713    LEA EDX,DWORD PTR SS:[EBP-118]
        00587719    MOV EAX,DWORD PTR DS:[EBX+2E0]
        0058771F    CALL Iparmor.00437BB8
        00587724    MOV EAX,DWORD PTR SS:[EBP-118]           ; name
        0058772A    LEA EDX,DWORD PTR SS:[EBP-114]
        00587730    CALL Iparmor.00409474
        00587735    MOV EDX,DWORD PTR SS:[EBP-114]           ; name转换为大写:HAPPY
        0058773B    LEA EAX,DWORD PTR SS:[EBP-110]
        00587741    MOV ECX,0FF
        00587746    CALL Iparmor.0040422C
        0058774B    LEA EDX,DWORD PTR SS:[EBP-110]           ; HAPPY
        00587751    MOV EAX,DWORD PTR DS:[EBX+2D0]
        00587757    CALL Iparmor.0049F8C8
        0058775C    LEA EDX,DWORD PTR SS:[EBP-11C]
        00587762    MOV EAX,DWORD PTR DS:[EBX+2D8]
        00587768    CALL Iparmor.00437BB8
        0058776D    MOV EAX,DWORD PTR SS:[EBP-11C]           ; sn
        00587773    PUSH EAX
        00587774    MOV EAX,DWORD PTR DS:[EBX+2D0]
        0058777A    MOV EAX,DWORD PTR DS:[EAX+224]
        00587780    ADD EAX,4EA
        00587785    CDQ                                      ; F489AB3:16进制的真正注册码,转换为10进制即可
        00587786    XOR EAX,EDX
        00587788    SUB EAX,EDX
        0058778A    LEA EDX,DWORD PTR SS:[EBP-120]
        00587790    CALL Iparmor.004099A0
        00587795    MOV EDX,DWORD PTR SS:[EBP-120]           ; 256416435:10进制真正注册码字符串
        0058779B    POP EAX                                  ; 假码:7654321
        0058779C    CALL Iparmor.00404360
        005877A1    JNZ Iparmor.005878DE                     ; 判断是否注册成功
  
        既然是明码比较,那我们就不追踪注册算法了。
  
--------------------------------------------------------------------------------
【经验总结】
  聪明的你一定注意到了,上面没有修复IAT表,当然dump出来的文件也就不能运行,但没关系,我们dump它只是为了找到下
  断点的地方而已。也就是说,不一定非要完整脱壳才能分析加了ASPr/EXECryptor等强壳的程序。
  当然,也可以不用Resource Hacker和DeDe,而直接用W32DASM来查找demped.exe里的失败信息字符串,因为我们的目标是找
  个下断的地方即可。呵呵,思路一定要灵活。
  感谢爱暴,感谢看到这里的你。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪软件安全论坛, 转载请注明作者并保持文章的完整, 谢谢!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
2
【下载地址】: 附件内

等待附件,谢谢HappyTown!

看来要往壳的方向发展了!
2007-3-6 16:18
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
3
总是传不上去附件。
谁帮忙下载后传到本地?
2007-3-6 16:47
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
4
我也传不上,附件比较大!
2007-3-6 17:43
0
雪    币: 235
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
晕,你怎么不写你的CRACKME,跑到我的地盘来了!?
2007-3-6 18:36
0
雪    币: 97697
活跃值: (200734)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
Originally posted by happytown
总是传不上去附件。
谁帮忙下载后传到本地?


Test.
2007-3-6 19:16
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
谢谢提供另一种带壳调试的思路,
2007-3-8 15:53
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
THEMIDA1.0.0.5可以这样DUMP?
2007-3-8 17:15
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
呵呵,不错。
2007-3-9 10:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
慢慢看。
2007-3-9 17:43
0
游客
登录 | 注册 方可回帖
返回
//