吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5124|回复: 9
收起左侧

[CrackMe] 吾爱破解2012CM大赛破文-willJ

[复制链接]
Chief 发表于 2012-4-30 15:14
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 Chief 于 2013-1-5 22:57 编辑

【文章标题】: 吾爱破解2012CM大赛破文-willJ
【文章作者】: Chief
【作者邮箱】: hi_Chief@163.com
【下载地址】: http://down.52pojie.cn/2012CM/%E6%98%93/willJ/
【作者声明】: 失误之处敬请诸位大侠赐教!
【难度】:       易
--------------------------------------------------------------------------------
【详细过程】
  F9运行--输入假码--提示错误。

  F12暂停-Alt+k----来到如下位置。
  地址       堆栈       函数过程 / 参数                       调用来自                      结构
  0012F930   77D19418   包含ntdll.KiFastSystemCallRet           user32.77D19416               0012F964
  0012F934   77D2770A   user32.WaitMessage                    user32.77D27705               0012F964
  0012F968   77D249C4   user32.77D2757B                       user32.77D249BF               0012F964
  0012F990   77D24A06   user32.77D2490E                       user32.77D24A01               0012F98C
  0012F9B0   77D3B190   user32.DialogBoxIndirectParamAorW     user32.77D3B18B               0012F9AC
  0012F9DC   00401327   user32.DialogBoxParamA                willJ.00401321                0012F9D8
  0012F9E0   00400000     hInst = 00400000
  0012F9E4   00000079     pTemplate = 79
  0012F9E8   000B07E0     hOwner = 000B07E0 ('吾爱2012CM大赛
  0012F9EC   00401060     DlgProc = willJ.00401060
  0012F9F0   00000000     lParam = NULL
  0012FA84   77D18734   包含willJ.00401327                      user32.77D18731
  0012FAB0   77D23CE4   ? user32.77D1870C                     user32.77D23CDF
  0012FB1C   77D23B30   ? user32.77D23C2F                     user32.77D23B2B               0012FB18
  0012FB64   77D3E599   user32.77D23AB1                       user32.77D3E594               0012FB60
  0012FB80   77D18734   包含user32.77D3E599                     user32.77D18731               0012FB7C
  0012FBAC   77D18816   ? user32.77D1870C                     user32.77D18811               0012FBA8
  0012FBB0   77D3E577   包含user32.77D18816                     user32.77D3E571               0012FC10
  
  地址:0012F9DC  右键-显示调用。
  来到
  004012E6   > \8D5424 28     lea edx,dword ptr ss:[esp+0x28]
  004012EA   .  52            push edx                                 ; /String2
  004012EB   .  68 E4754000   push willJ.004075E4                      ; |String1 = willJ.004075E4
  004012F0   .  FF15 00604000 call dword ptr ds:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
  004012F6   .  68 E8030000   push 0x3E8                               ; /ControlID = 3E8 (1000.)
  004012FB   .  56            push esi                                 ; |hWnd
  004012FC   .  FF15 D4604000 call dword ptr ds:[<&USER32.GetDlgItem>] ; \GetDlgItem
  00401302   >  50            push eax                                 ; /hWnd
  00401303   .  FF15 BC604000 call dword ptr ds:[<&USER32.SetFocus>]   ; \SetFocus
  00401309   .  6A 00         push 0x0                                 ; /BeepType = MB_OK
  0040130B   .  FF15 C0604000 call dword ptr ds:[<&USER32.MessageBeep>>; \MessageBeep
  00401311   .  A1 E0754000   mov eax,dword ptr ds:[0x4075E0]
  00401316   .  6A 00         push 0x0                                 ; /lParam = NULL
  00401318   .  68 60104000   push willJ.00401060                      ; |DlgProc = willJ.00401060
  0040131D   .  56            push esi                                 ; |hOwner
  0040131E   .  6A 79         push 0x79                                ; |pTemplate = 79
  00401320   .  50            push eax                                 ; |hInst => 00400000
  00401321   .  FF15 E0604000 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
  00401327   .  5D            pop ebp
  00401328   .  5B            pop ebx
  00401329   .  5F            pop edi
  0040132A   .  B8 01000000   mov eax,0x1
  0040132F   .  5E            pop esi
  00401330   .  81C4 80000000 add esp,0x80
  正常手法,往上找看看头没有跳转跳过这个错误.
  我们发现这个
  00401232   .  3D B80B0000   cmp eax,0xBB8
  00401237      0F87 FC000000 ja willJ.00401339   -----------------这个能跳过那个CALL。
  0040123D   .  8B5424 10     mov edx,dword ptr ss:[esp+0x10]
  00401241   .  8D4C24 40     lea ecx,dword ptr ss:[esp+0x40]
  00401245   .  51            push ecx
  00401246   .  50            push eax
  00401247   .  8B4424 1C     mov eax,dword ptr ss:[esp+0x1C]
  0040124B   .  53            push ebx
  0040124C   .  55            push ebp
  0040124D   .  52            push edx
  -----------------------------------
  00401237      0F87 FC000000 ja willJ.00401339
  既然这个显示能跳过,我们来试下,F2下断---运行--输入假码--点确定---这时断下。

  跳转没实现,ja修改为jmp无条件跳转试下。
  F8单步,来到
  00401339   > \8D4C24 28     lea ecx,dword ptr ss:[esp+0x28]
  0040133D   .  51            push ecx                                 ; /String2
  0040133E   .  68 E4754000   push willJ.004075E4                      ; |String1 = willJ.004075E4
  00401343   .  FF15 00604000 call dword ptr ds:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
  00401349   .  68 E8030000   push 0x3E8                               ; /ControlID = 3E8 (1000.)
  0040134E   .  56            push esi                                 ; |hWnd
  0040134F   .  FF15 D4604000 call dword ptr ds:[<&USER32.GetDlgItem>] ; \GetDlgItem
  00401355   .  50            push eax                                 ; /hWnd
  00401356   .  FF15 BC604000 call dword ptr ds:[<&USER32.SetFocus>]   ; \SetFocus
  0040135C   .  6A 00         push 0x0                                 ; /BeepType = MB_OK
  0040135E   .  FF15 C0604000 call dword ptr ds:[<&USER32.MessageBeep>>; \MessageBeep
  00401364   .  8B15 E0754000 mov edx,dword ptr ds:[0x4075E0]          ;  willJ.00400000
  0040136A   .  6A 00         push 0x0                                 ; /lParam = NULL
  0040136C   .  68 60104000   push willJ.00401060                      ; |DlgProc = willJ.00401060
  00401371   .  56            push esi                                 ; |hOwner
  00401372   .  6A 79         push 0x79                                ; |pTemplate = 79
  00401374   .  52            push edx                                 ; |hInst => 00400000
  00401375   .  FF15 E0604000 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
  0040137B   .  5D            pop ebp
  0040137C   .  5B            pop ebx
  0040137D   .  5F            pop edi
  0040137E   .  B8 01000000   mov eax,0x1
  00401383   .  5E            pop esi
  00401384   .  81C4 80000000 add esp,0x80
  
  有没有发现这些代码有什么问题?没错跟上面的错误CALL同样的代码。----我们试试,继续单步。
  额,到00401375   .  FF15 E0604000 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
  就出错误CALL。
  ---------------------------------
  看来这个跳转不是关键,别灰心,我们继续返回去找看看。
  既然那个跳转不行,继续找。
  来到这里。就是刚才那个ja的下面。
  00401254   .  8B3D D4604000 mov edi,dword ptr ds:[<&USER32.GetDlgIte>;  user32.GetDlgItem
  0040125A   .  83C4 18       add esp,0x18
  0040125D   .  85C0          test eax,eax
  0040125F   .  74 6B         je XwillJ.004012CC
  00401261   .  8D4C24 18     lea ecx,dword ptr ss:[esp+0x18]
  00401265   .  51            push ecx                                 ; /String2
  00401266   .  68 E4754000   push willJ.004075E4                      ; |String1 = willJ.004075E4
  0040126B   .  FF15 00604000 call dword ptr ds:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
  00401271   .  6A 00         push 0x0                                 ; /Enable = FALSE
  00401273   .  6A 6E         push 0x6E                                ; |/ControlID = 6E (110.)
  00401275   .  56            push esi                                 ; ||hWnd
  00401276   .  FFD7          call edi                                 ; |\GetDlgItem
  00401278   .  8B1D B8604000 mov ebx,dword ptr ds:[<&USER32.EnableWin>; |user32.EnableWindow
  0040127E   .  50            push eax                                 ; |hWnd
  
  0040125F   .  74 6B         je XwillJ.004012CC--------这个跳转可疑,很大面积的跳转。
  慢慢来,一个个来试。继续F2下断。运行--输入假码--确定---断下。
  我们发现跳转实现,我们让他不跳试试。
  nop掉。
  F8单步往下走。
  004012CA   . /EB 36         jmp XwillJ.00401302
  004012CC   > |8D5424 28     lea edx,dword ptr ss:[esp+0x28]
  004012D0   . |52            push edx                                 ; /String2
  004012D1   . |68 E4754000   push willJ.004075E4                      ; |String1 = willJ.004075E4
  004012D6   . |FF15 00604000 call dword ptr ds:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
  004012DC   . |68 E8030000   push 0x3E8
  004012E1   . |56            push esi
  004012E2   . |FFD7          call edi
  到这里,JMP 无条件跳转。
  继续往下。
  还是来到
  004012E6   > \8D5424 28     lea edx,dword ptr ss:[esp+0x28]
  004012EA   .  52            push edx                                 ; /String2
  004012EB   .  68 E4754000   push willJ.004075E4                      ; |String1 = willJ.004075E4
  004012F0   .  FF15 00604000 call dword ptr ds:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
  004012F6   .  68 E8030000   push 0x3E8                               ; /ControlID = 3E8 (1000.)
  004012FB   .  56            push esi                                 ; |hWnd
  004012FC   .  FF15 D4604000 call dword ptr ds:[<&USER32.GetDlgItem>] ; \GetDlgItem
  00401302   >  50            push eax                                 ; /hWnd
  00401303   .  FF15 BC604000 call dword ptr ds:[<&USER32.SetFocus>]   ; \SetFocus
  00401309   .  6A 00         push 0x0                                 ; /BeepType = MB_OK
  0040130B   .  FF15 C0604000 call dword ptr ds:[<&USER32.MessageBeep>>; \MessageBeep
  00401311   .  A1 E0754000   mov eax,dword ptr ds:[0x4075E0]
  00401316   .  6A 00         push 0x0                                 ; /lParam = NULL
  00401318   .  68 60104000   push willJ.00401060                      ; |DlgProc = willJ.00401060
  0040131D   .  56            push esi                                 ; |hOwner
  0040131E   .  6A 79         push 0x79                                ; |pTemplate = 79
  00401320   .  50            push eax                                 ; |hInst => 00400000
00401321   .  FF15 E0604000 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
  00401327   .  5D            pop ebp
  00401328   .  5B            pop ebx
  00401329   .  5F            pop edi
  0040132A   .  B8 01000000   mov eax,0x1
  0040132F   .  5E            pop esi
  00401330   .  81C4 80000000 add esp,0x80
  
  我们发现提示成功了。
  错误+成功都调用这个CALL。
  00401321   .  FF15 E0604000 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
  
  那毫无疑问
0040125F     /74 6B          je XwillJ.004012CC
  就是这个CM的关键跳。
  
  

Ps:小菜哪里不对,还望指点,当然觉得还可以的,加分我是不会拒绝的。

还有 willJ的头像很强悍的。

附上录像一份,录像只是快速演示而已。
录像下载地址:http://dl.dbank.com/c041wmb2dp
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Chief, 转载可以随便改,只要对你们有帮助就好。

                                                       2012年04月30日 15:06:32

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 3热心值 +3 收起 理由
Thend + 1 膜拜Chief大大。这个搞了很久都不成功,学习.
xheonen + 1 欢迎分析讨论交流,[吾爱破解论坛]有你更精.
Peace + 1 欢迎分析讨论交流,[吾爱破解论坛]有你更精.

查看全部评分

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

Sound 发表于 2012-4-30 15:17
老师犀利 让我这小菜学习了 第一次距离老师这么近
Peace 发表于 2012-4-30 15:25
小咪咪 发表于 2012-4-30 15:37
Rookietp 发表于 2012-4-30 15:44
隐藏高手cheif开始发力啦
83992713 发表于 2012-4-30 15:51
真是高手啊~~~~~~~~~~~~~~~~~~~~
小明无敌 发表于 2012-4-30 16:12
膜拜中              
shifeibao 发表于 2012-4-30 19:44
来支持活动的..
alexcuby 发表于 2012-4-30 19:51
呵呵

这个真好啊
冰封溪谷 发表于 2012-5-1 03:38
我是来膜拜cheif牛的

点评

膜拜溪谷牛呀..+1  发表于 2012-5-1 11:58
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 01:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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