吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6198|回复: 1
收起左侧

[分享] 人肉复流:轻松蹂躏Chord的某CrackMe

[复制链接]
ps520 发表于 2009-11-1 14:18
【文章标题】: 人肉复流:轻松蹂躏Chord的某CrackMe
【文章作者】: Luck
【作者邮箱】: admin@sooluck.cn
【作者主页】: www.sooluck.cn
【作者QQ号】: 466748210
【软件名称】: CrackMe
【下载地址】: http://www.52pojie.cn/thread-23042-1-2.html
【加壳方式】: 什么都没找到  [Overlay] *
【保护方式】: 变异易格式+未知保护壳
【编写语言】: E language
【使用工具】: OllyDbg
【操作平台】: Win7
【软件介绍】: 就一个CrackMe,没啥好说的啦~
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  这个CrackMe,根据作者及后面的提示,我们可以知道是易的CrackMe。
  既然是无法快速脱壳的,那么我们还脱它干嘛?直接上。
  执行CrackMe,输入"Luck"。确认,提示失败。
  于是想到用Bp MessageBoxA回溯到关键判断法.【见《易语言那点“破”事》中无视壳的破解方法】
  OllyDbg加载,F9执行程序。下断Bp MessageBoxA。
  点按钮,OllyDbg暂停了。
  取消断点
  76FFEA71 >  8BFF            mov     edi, edi
  76FFEA73    55              push    ebp
  76FFEA74    8BEC            mov     ebp, esp
  76FFEA76    833D 749A0077 0>cmp     dword ptr [0x77009A74], 0x0
  76FFEA7D    74 24           je      short 76FFEAA3
  76FFEA7F    64:A1 18000000  mov     eax, dword ptr fs:[0x18]
  76FFEA85    6A 00           push    0x0
  76FFEA87    FF70 24         push    dword ptr [eax+0x24]
  76FFEA8A    68 A49E0077     push    77009EA4
  76FFEA8F    FF15 3414FA76   call    dword ptr [<&KERNEL32.Interlocke>; kernel32.InterlockedCompareExchange
  76FFEA95    85C0            test    eax, eax
  76FFEA97    75 0A           jnz     short 76FFEAA3
  76FFEA99    C705 A09E0077 0>mov     dword ptr [0x77009EA0], 0x1
  76FFEAA3    6A 00           push    0x0
  76FFEAA5    FF75 14         push    dword ptr [ebp+0x14]
  76FFEAA8    FF75 10         push    dword ptr [ebp+0x10]
  76FFEAAB    FF75 0C         push    dword ptr [ebp+0xC]
  76FFEAAE    FF75 08         push    dword ptr [ebp+0x8]
  76FFEAB1    E8 73FFFFFF     call    MessageBoxExA
  76FFEAB6    5D              pop     ebp
  76FFEAB7    C2 1000         retn    0x10
  
  
  于是F8,
  76FFEAB1    E8 73FFFFFF     call    MessageBoxExA
  76FFEAB6    5D              pop     ebp
  76FFEAB7    C2 1000         retn    0x10
  
  这里弹出信息框,确定。
  继续F8,直到
  10062E72    83F8 04         cmp     eax, 0x4
  10062E75    0F95C2          setne   dl
  10062E78    4A              dec     edx
  10062E79    83E2 03         and     edx, 0x3
  10062E7C    8BC2            mov     eax, edx
  10062E7E    8901            mov     dword ptr [ecx], eax
  10062E80    83C4 64         add     esp, 0x64
  10062E83    C3              retn
  
  观察数据窗口,得到:
  0012F3E0   0040976E  RETURN to Chord.0040976E from Chord.0040A452
  
  0040976E即为我们的着手点
  模块里选择Chord.exe,然后Ctrl+G输入0040976E
  
  00409706   /0F84 35000000   je      00409741
  0040970C   |6A 00           push    0x0
  0040970E   |6A 00           push    0x0
  00409710   |6A 00           push    0x0
  00409712   |68 01030080     push    0x80000301
  00409717   |6A 00           push    0x0
  00409719   |68 00000000     push    0x0
  0040971E   |68 04000080     push    0x80000004
  00409723   |6A 00           push    0x0
  00409725   |68 2C914000     push    0040912C
  0040972A   |68 03000000     push    0x3
  0040972F   |BB 00030000     mov     ebx, 0x300
  00409734   |E8 190D0000     call    0040A452
  00409739   |83C4 28         add     esp, 0x28
  0040973C   |E9 30000000     jmp     00409771
  00409741   \6A 00           push    0x0
  00409743    6A 00           push    0x0
  00409745    6A 00           push    0x0
  00409747    68 01030080     push    0x80000301
  0040974C    6A 00           push    0x0
  0040974E    68 00000000     push    0x0
  00409753    68 04000080     push    0x80000004
  00409758    6A 00           push    0x0
  0040975A    68 37914000     push    00409137
  0040975F    68 03000000     push    0x3
  00409764    BB 00030000     mov     ebx, 0x300
  00409769    E8 E40C0000     call    0040A452
  0040976E    83C4 28         add     esp, 0x28
  
  
  应该没啥多说的了,嘿嘿。
  爆破就在
  00409706   /0F84 35000000   je      00409741
  
  如果有兴趣也可以分析下流程,然后KeyGen就更完美了。
  此文主旨是用于解释在《易语言那点“破”事》中无视壳类保护,因为这个是个难点,
  很多朋友都认为必须脱了才能破,其实不然。此方法通用于使用超级伪装者的软件。
  
  我们再用按钮法来分析下流程。
  重新加载Chord.exe,并F9跑起。
  模块中选择krnln.双击进入。Ctrl+B输入"FF 55 FC",来到
  100290A6    FF55 FC         call    dword ptr [ebp-0x4]
  
  F2断下。切回程序,输入Luck,点按钮。
  OD成功断下,F2取消断点,F7跟进。
  004095FA    55              push    ebp
  004095FB    8BEC            mov     ebp, esp
  004095FD    81EC 18000000   sub     esp, 0x18
  00409603    C745 FC 0000000>mov     dword ptr [ebp-0x4], 0x0
  0040960A    68 00000000     push    0x0
  0040960F    BB C4060000     mov     ebx, 0x6C4
  
  F8会得到数字:
  eax=001F2558, (ASCII "88892000")
  Stack ss:[0012F41C]=001DDA28
  
  测试这个注册码是有效的
  
  
--------------------------------------------------------------------------------
【经验总结】
  1.易语言的程序并非都是需要脱壳的
  2.在熟悉一个东西以后再牛的东西也会程序虚设。正如Nooby对VMP的蹂躏
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Luck, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年11月01日 14:14:10

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| ps520 发表于 2009-11-1 14:19
看着算法我就郁闷了、

如果需要KeyGen可以考虑用内存读取或逆算法~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 17:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表