首页
社区
课程
招聘
[旧帖] [原创]图片魔法师 手动脱壳+破解,附动画(申请邀请码) 0.00雪花
2010-12-17 19:50 3296

[旧帖] [原创]图片魔法师 手动脱壳+破解,附动画(申请邀请码) 0.00雪花

2010-12-17 19:50
3296
【文章标题】: 图片魔法师 手动脱壳+破解(申请邀请码)
【文章作者】: JohnH
【软件名称】: 图片魔法师
【软件大小】: 475 KB
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: 机器码注册
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: flyOD、PEiD、C32、LordPE、ImportREC
【操作平台】: XP SP3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
    软件过程很简单,不是很难,下面我就来写一下具体过程。
    (我同时录了动画,如果看不懂,可以看我录的动画)
    1:脱壳
     用PEiD查壳,可以看到是ASPack 2.12 -> Alexey Solodovnikov的壳。
  


  00573001 >  60              pushad                                      ; 壳入口
  00573002    E8 03000000     call 图片魔法.0057300A                      ; 关键call,F7跟进
  ------------------------------
  0057300A    5D              pop ebp                                     ; F8步过
  0057300B    45              inc ebp
  0057300C    55              push ebp
  0057300D    C3              retn
  ------------------------------
  00573008   /EB 04           jmp short 图片魔法.0057300E                 ; 会跳到这里,F8一下
  0057300A   |5D              pop ebp
  0057300B   |45              inc ebp
  0057300C   |55              push ebp
  0057300D   |C3              retn
  0057300E   \E8 01000000     call 图片魔法.00573014                      ; 这里就是第二个关键call,F7跟进
  ------------------------------
  00573014    5D              pop ebp                                     ; 到达这里,开始一路F8就可以了
  00573015    BB EDFFFFFF     mov ebx,-13
  0057301A    03DD            add ebx,ebp
  0057301C    81EB 00301700   sub ebx,173000
  00573022    83BD 22040000 0>cmp dword ptr ss:[ebp+422],0
  00573029    899D 22040000   mov dword ptr ss:[ebp+422],ebx
  0057302F    0F85 65030000   jnz 图片魔法.0057339A
  00573035    8D85 2E040000   lea eax,dword ptr ss:[ebp+42E]
  ------------------------------
    一路向下F8,会有向上的跳转,把鼠标定位到这个跳转的下一行,按F4跳过去,然后继续F8就可以了。



  ------------------------------
  0057312B    33DB            xor ebx,ebx
  0057312D    0BC9            or ecx,ecx
  0057312F    74 2E           je short 图片魔法.0057315F
  00573131    78 2C           js short 图片魔法.0057315F
  00573133    AC              lods byte ptr ds:[esi]
  00573134    3C E8           cmp al,0E8
  00573136    74 0A           je short 图片魔法.00573142
  00573138    EB 00           jmp short 图片魔法.0057313A
  0057313A    3C E9           cmp al,0E9
  0057313C    74 04           je short 图片魔法.00573142
  0057313E    43              inc ebx
  0057313F    49              dec ecx
  00573140  ^ EB EB           jmp short 图片魔法.0057312D                 ; 这里是向上的跳转,鼠标定位到下一行,F4
  00573142    8B06            mov eax,dword ptr ds:[esi]                  ; 继续按F8,遇到向上的跳转还是鼠标定位到下一行,跳过去
  00573144    EB 00           jmp short 图片魔法.00573146
  00573146    803E 1E         cmp byte ptr ds:[esi],1E
  ------------------------------



  005733B0   /75 08           jnz short 图片魔法.005733BA                 ; 最后会跳到这里
  005733B2   |B8 01000000     mov eax,1
  005733B7   |C2 0C00         retn 0C
  005733BA   \68 E4394D00     push 图片魔法.004D39E4                      ; 这里就到达程序的入口了 F8
  005733BF    C3              retn                                        ; 再按F8
  ------------------------------



  004D39E4    55              push ebp                                    ;这里就是程序真正的入口了
  004D39E5    8BEC            mov ebp,esp
  004D39E7    83C4 F0         add esp,-10
  004D39EA    53              push ebx
  004D39EB    B8 1C364D00     mov eax,图片魔法.004D361C
  004D39F0    E8 BB2FF3FF     call 图片魔法.004069B0
  004D39F5    8B1D DC6F4D00   mov ebx,dword ptr ds:[4D6FDC]               ; 图片魔法.004D8C34
  004D39FB    8B03            mov eax,dword ptr ds:[ebx]
  
    然后转存、修复输入表,保存文件,脱壳完成。程序脱壳后1.47 MB。
  (具体可以看我录的动画)
  
  
    2:开始程序的破解
     程序的注册文字没有明码,所以要用C32来找到关键点。
    分别查看它的字符串,可以找到四处可疑点,分别记下这些点。
    为了省事我就不再找了,可以到动画里看具体过程。
  
  这里就是第一处爆破点。
  004D2FA5::  BA 68304D00              MOV EDX,4D3068                              \->:  - 未购买用户
  
  第二处
  004D25CF::  B8 CC284D00              MOV EAX,4D28CC                              \->: 本功能需要购买后才能使用!
  
  第三处
  004D3517::  BA 4C354D00              MOV EDX,4D354C                              \->: 本软件需要购买后才能无限制使
  
  第四处
  004D33ED::  BA 58344D00              MOV EDX,4D3458                              \->: 本软件已注册给
  
    其它地方都是乱码,先不管,就从这些点下手。
    OD载入程序后,分别 Ctrl + G 定位到这些可疑点处。
  
  第一个
  004D2F90   /75 27           jnz short dumped_.004D2FB9                     ; 这个要跳转实现,jnz改为jmp
  004D2F92   |8D55 E8         lea edx,dword ptr ss:[ebp-18]
  004D2F95   |8B9E 54030000   mov ebx,dword ptr ds:[esi+354]
  004D2F9B   |8BC3            mov eax,ebx
  004D2F9D   |E8 86CEFCFF     call dumped_.0049FE28
  004D2FA2   |8D45 E8         lea eax,dword ptr ss:[ebp-18]
  004D2FA5   |BA 68304D00     mov edx,dumped_.004D3068                       ; 【- 未购买用户】
  004D2FAA   |E8 6D18F3FF     call dumped_.0040481C
  004D2FAF   |8B55 E8         mov edx,dword ptr ss:[ebp-18]
  004D2FB2   |8BC3            mov eax,ebx
  004D2FB4   |E8 03DBFCFF     call dumped_.004A0ABC
  004D2FB9   \B8 CC954D00     mov eax,dumped_.004D95CC
  004D2FBE    E8 9915F3FF     call dumped_.0040455C
  
  第二个
  004D25CD   /74 1E           je short dumped_.004D25ED                      ; 这个跳转也要实现,je改为jmp
  004D25CF   |B8 CC284D00     mov eax,dumped_.004D28CC                       ; 【本功能需要购买后才能使用!】
  004D25D4   |E8 8B65F6FF     call dumped_.00438B64
  004D25D9   |A1 30714D00     mov eax,dword ptr ds:[4D7130]
  004D25DE   |8B00            mov eax,dword ptr ds:[eax]
  004D25E0   |8B10            mov edx,dword ptr ds:[eax]
  004D25E2   |FF92 E8000000   call dword ptr ds:[edx+E8]
  004D25E8   |E9 AB020000     jmp dumped_.004D2898
  004D25ED   \8D55 F8         lea edx,dword ptr ss:[ebp-8]
  
  第三个
  004D350E   /74 2F           je short dumped_.004D353F                      ; 这个跳转要实现,je改为jmp
  004D3510   |6A 24           push 24
  004D3512   |B9 44354D00     mov ecx,dumped_.004D3544
  004D3517   |BA 4C354D00     mov edx,dumped_.004D354C                       ; 【本软件需要购买后才能无限制使】
  004D351C   |A1 DC6F4D00     mov eax,dword ptr ds:[4D6FDC]
  004D3521   |8B00            mov eax,dword ptr ds:[eax]
  004D3523   |E8 28C8F8FF     call dumped_.0045FD50
  004D3528   |83F8 06         cmp eax,6
  004D352B   |75 12           jnz short dumped_.004D353F
  004D352D   |C603 00         mov byte ptr ds:[ebx],0
  004D3530   |A1 30714D00     mov eax,dword ptr ds:[4D7130]
  004D3535   |8B00            mov eax,dword ptr ds:[eax]
  004D3537   |8B10            mov edx,dword ptr ds:[eax]
  004D3539   |FF92 E8000000   call dword ptr ds:[edx+E8]
  004D353F   \5B              pop ebx
  
  第四个
  004D33E2   /75 3C           jnz short dumped_.004D3420                     ; 这个跳转不能让它实现,要不就会显示没有注册
  004D33E4   |8D45 FC         lea eax,dword ptr ss:[ebp-4]                   ; 简单的方法,nop掉
  004D33E7   |8B0D D4954D00   mov ecx,dword ptr ds:[4D95D4]                  ; 这样就没有实现跳转,到达下面这句了
  004D33ED   |BA 58344D00     mov edx,dumped_.004D3458                       ; 【本软件已注册给】
  004D33F2   |E8 6914F3FF     call dumped_.00404860
  004D33F7   |8B55 FC         mov edx,dword ptr ss:[ebp-4]
  004D33FA   |A1 30714D00     mov eax,dword ptr ds:[4D7130]
  004D33FF   |8B00            mov eax,dword ptr ds:[eax]
  004D3401   |8B80 20030000   mov eax,dword ptr ds:[eax+320]
  004D3407   |E8 A0C6F6FF     call dumped_.0043FAAC
  004D340C   |A1 30714D00     mov eax,dword ptr ds:[4D7130]
  004D3411   |8B00            mov eax,dword ptr ds:[eax]
  004D3413   |8B80 20030000   mov eax,dword ptr ds:[eax+320]
  004D3419   |B2 01           mov dl,1
  004D341B   |E8 7CC5F6FF     call dumped_.0043F99C
  004D3420   \A1 30714D00     mov eax,dword ptr ds:[4D7130]
  004D3425    8B00            mov eax,dword ptr ds:[eax]
  
    全部保存后,运行修改后的程序。
    可以看到所有限制都被解除了。
    好了,程序的手动脱壳和爆破就全部完成了。

--------------------------------------------------------------------------------
【经验总结】
    总结一下。
    我是玩PPC的,很多手机软件有时就要注册,很费事,有时找不到注册码这个软件就是废品。所以我就打算学学怎么破解
  。先是从IDA开始学,不过太乱了,根本就无从下手。
    某一天忽然在学校图书管里找到一本书,很激动,《加密解密全攻略》,然后我就在这里找相关的工具的使用方法,期间
  又在电脑上试验了很多软件,在网上也查了很多教程,不过那些教程都略了很多东西,没有说明方法,太粗略。
    后来,看到看雪,想当然啦,就看那些文章,学到了很多东西。
    就在一个月前我才知道 nop 这个功能,二个月前才知道 F2 可以下断点,很多东西都是在看雪里找到的。
    所以在这里就感谢一下看雪为我提供的平台。
  
    这个软件不是我折腾的第一个软件,之前弄过很多,但都不尽完美,不是壳破不了,就是注册时有暗桩,热情一再被打消
  ,后来慢慢的,看了很多教程,对破解也有信心了,才有了这偏文章。
    这偏文章花了我一下午的时间啊,写文,做动画,没想到要这么累人。不过很高兴的是现在终于完成了。
  
    我是从IDa开始的,到OD、到C、到B、到汇编,到现在我还是要从新看看书了,没有一个好基础还真是不行。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年12月17日 19:34:58

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (6)
雪    币: 81
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
JohnH 1 2010-12-17 19:56
2
0
有点儿晕,那些图片没法弄,它就在下面显示着。
刚才改了一下,没改出来,管理员要是能帮忙那就感谢啦!
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飞鸿 2010-12-18 19:16
3
0
LZ真不错啊,我也在慢慢的学习中,不过我还没有达到LZ的水平啊
雪    币: 322
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
高军 2010-12-29 08:50
4
0
又一个有所成的新人,我要加油
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
szwalter 2010-12-29 09:29
5
0
谢谢搂住分享,收藏,有空认真学习学习。
雪    币: 81
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
JohnH 1 2011-1-28 08:03
6
0
ASPack 2.12 -> Alexey Solodovnikov的壳就下硬件断点,也就是ESP定律,堆栈平衡
  OD载入后,看寄存器ESP值,在命令栏里,输入 HR+此ESP值 然后F9,跑起来断下后F8单步几下就到了。
  这里就算是对我最近学习的补充吧,我终于懂了ESP定律了,而且屡试不爽。
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SayIt 2011-3-22 19:46
7
0
楼主看了什么教程,可否介绍一下  我很想学一下解决暗桩的技巧。暗桩着实让人头痛啊
游客
登录 | 注册 方可回帖
返回