吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

[原创] reversing.kr 上面一个CM的简单分析,replace.exe

[复制链接]
gunxsword 发表于 2017-10-13 12:58
本帖最后由 Poner 于 2017-10-13 14:27 编辑

之前看到论坛里有人分享这个站点的破解文章,感觉挺好玩,所以也注册了一个,玩了一下,现在只搞定了几个简单的,目前,820分,有空就玩一下!

网站有人发过,我再发一下:http://reversing.kr/challenge.php,这应该不违规吧!不算广告吧!!

这次分享的是里面的replace 这个,以下是代码分析,加了很多注释!

[Asm] 纯文本查看 复制代码
00401020   .  55            push    ebp
00401021   .  8BEC          mov     ebp, esp
00401023   .  817D 0C 11010>cmp     dword ptr [ebp+C], 111
0040102A   .  74 06         je      short Replace.00401032
0040102C   .  33C0          xor     eax, eax
0040102E   .  5D            pop     ebp
0040102F   .  C2 1000       retn    10
00401032   >  8B45 10       mov     eax, dword ptr [ebp+10]
00401035   .  25 FFFF0000   and     eax, 0FFFF
0040103A   .  83E8 02       sub     eax, 2                           ;  Switch (cases 2..3EB)
0040103D   .  74 56         je      short Replace.00401095
0040103F   .  2D E9030000   sub     eax, 3E9
00401044   .  74 06         je      short Replace.0040104C
00401046   .  33C0          xor     eax, eax                         ;  Default case of switch 0040103A
00401048   .  5D            pop     ebp
00401049   .  C2 1000       retn    10
0040104C   >  56            push    esi                              ;  Case 3EB of switch 0040103A
0040104D   .  8B75 08       mov     esi, dword ptr [ebp+8]
00401050   .  6A 00         push    0                                ; /IsSigned = FALSE
00401052   .  6A 00         push    0                                ; |pSuccess = NULL
00401054   .  68 EA030000   push    3EA                              ; |ControlID = 3EA (1002.)
00401059   .  56            push    esi                              ; |hWnd
0040105A   .  FF15 9C504000 call    dword ptr [<&USER32.GetDlgItemIn>; \GetDlgItemInt
00401060   .  A3 D0844000   mov     dword ptr [4084D0], eax          ;  //取得一个无符号整型数值,也就是我们输入的是一个无符号整数
00401065   .  E8 05360000   call    Replace.0040466F                 ;  //F7跟踪进入
0040106A   .  33C0          xor     eax, eax
0040106C   .  E9 1F360000   jmp     Replace.00404690
00401071   >  EB 11         jmp     short Replace.00401084           ;  //我们输入的整数经过代码转换处理,最终代码会把这个401071给NOP掉,这样才能出现正确的弹窗
00401073   .  68 34 60 40 0>ascii   "h4`@",0                         ;  Correct!   ///通过查找这个字符串可以定位到这里
00401078   .  68 E9030000   push    3E9                              ; |ControlID = 3E9 (1001.)
0040107D   .  56            push    esi                              ; |hWnd
0040107E   .  FF15 A0504000 call    dword ptr [<&USER32.SetDlgItemTe>; \SetDlgItemTextA
00401084   >  B8 01000000   mov     eax, 1
00401089   .  90            nop
0040108A   .  90            nop
0040108B   .  90            nop
0040108C   .  90            nop
0040108D   .  90            nop
0040108E   .  90            nop
0040108F   .  90            nop
00401090   .  5E            pop     esi
00401091   .  5D            pop     ebp
00401092   .  C2 1000       retn    10
00401095   >  8B45 08       mov     eax, dword ptr [ebp+8]           ;  Case 2 of switch 0040103A
00401098   .  6A 02         push    2                                ; /Result = 2
0040109A   .  50            push    eax                              ; |hWnd
0040109B   .  FF15 A4504000 call    dword ptr [<&USER32.EndDialog>]  ; \EndDialog
004010A1   .  B8 01000000   mov     eax, 1
004010A6   .  5D            pop     ebp
004010A7   .  C2 1000       retn    10


[Asm] 纯文本查看 复制代码
0040466F   $  E8 06000000   call    Replace.0040467A
00404674      81            db      81                               ;  //现在是这样的,这个是OD的分析有问题,因为加了花,我们右键,删除这句的分析
00404675   .  05 D0844000   add     eax, Replace.004084D0
0040467A   .  C705 16604000>mov     dword ptr [406016], 619060EB     ;  //F7过来到这里,看到上面的404674这句了吧,这里显示是,DB 81
00404684   .  E8 00000000   call    Replace.00404689
00404689  /$  FF05 D0844000 inc     dword ptr [4084D0]
0040468F  \.  C3            retn
00404690   >  A1 D0844000   mov     eax, dword ptr [4084D0]
00404695   .  68 9F464000   push    Replace.0040469F
0040469A   .  E8 EAFFFFFF   call    Replace.00404689
0040469F   .  C705 6F464000>mov     dword ptr [40466F], C39000C6
004046A9   .  E8 C1FFFFFF   call    Replace.0040466F
004046AE   .  40            inc     eax
004046AF   .  E8 BBFFFFFF   call    Replace.0040466F
004046B4   .  C705 6F464000>mov     dword ptr [40466F], 6E8
004046BE   .  58            pop     eax
004046BF   .  B8 FFFFFFFF   mov     eax, -1
004046C4   .^ E9 A8C9FFFF   jmp     Replace.00401071


[Asm] 纯文本查看 复制代码
//然后我们看到的就是这样的代码了,他把我们输入的值加上了,0x601605c7
00404674    8105 D0844000 C>add     dword ptr [4084D0], 601605C7     ; 
0040467E    40              inc     eax    //下面几句是花指令,不用管,往下执行
0040467F    00EB            add     bl, ch
00404681    60              pushad
00404682    90              nop
00404683    61              popad
00404684    E8 00000000     call    Replace.00404689
00404689    FF05 D0844000   inc     dword ptr [4084D0] //这里是把计算后的再加1
0040468F    C3              retn
00404690    A1 D0844000     mov     eax, dword ptr [4084D0]
00404695    68 9F464000     push    Replace.0040469F
0040469A    E8 EAFFFFFF     call    Replace.00404689
0040469F    C705 6F464000 C>mov     dword ptr [40466F], C39000C6  //这里也是个重点,改变40466f的代码了
004046A9    E8 C1FFFFFF     call    Replace.0040466F
004046AE    40              inc     eax     //这里加1也就是执行两次mov [eax],90,这也告诉我们,他要修改的地方是两个字节,正是,401071
004046AF    E8 BBFFFFFF     call    Replace.0040466F
004046B4    C705 6F464000 E>mov     dword ptr [40466F], 6E8  //这句就是还原,其实没啥用
004046BE    58              pop     eax
004046BF    B8 FFFFFFFF     mov     eax, -1
004046C4  ^ E9 A8C9FFFF     jmp     Replace.00401071//最后跳向401071,因为原来的JMP被NOP掉,所以直接显示成功的提示


[Asm] 纯文本查看 复制代码
//40469f的代码,执行后是下面的效果
0040466F  /$  C600 90       mov     byte ptr [eax], 90  //90就是NOP,应该都知道
//根具上面的分析,我们要NOP的就是401071,让那个JMP失效
00404672  \.  C3            retn


算法总结:

整个算法就是利用了无符号数的溢出,无符号最大值是0~4294967295,我们输入一个数,这个数加上0x601605c7时,会超过这个最大值,超出的值再经过3次+1操做,最终是0x401071

写的很乱,不过应该是说清楚了,这个值是多少,自己计算一下吧

语文学的不好.写的很乱,请谅解,第一次在吾爱发破文,写的不好,请大家不要喷,谢谢!网站上有些CM还是不算难的,因为我也不是什么高手,有空的时候,可以玩一下!

免费评分

参与人数 3吾爱币 +6 热心值 +3 收起 理由
会飞的丑小鸭 + 1 + 1 我很赞同!
wallker1 + 1 + 1 已答复!
Sound + 4 + 1 已经处理,感谢您对吾爱破解论坛的支持!

查看全部评分

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

Poner 发表于 2017-10-13 14:28
帮你编辑了一下  好看多了  以后发帖学着吧
任国富 发表于 2017-10-13 16:16
 楼主| gunxsword 发表于 2017-10-13 17:24
Poner 发表于 2017-10-13 14:28
帮你编辑了一下  好看多了  以后发帖学着吧

历害了,真要学啊,这编辑完,好看多了,一下就高大上了,感谢!
hyqwfx 发表于 2017-10-13 21:40
学习了,感谢分享
wallker1 发表于 2017-10-14 09:05
加油做的很好!!!!{:1_931:}
Ticktack 发表于 2017-10-14 18:26
学习了..
头像被屏蔽
爱蜂玩爱疯玩 发表于 2017-11-16 13:25
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
爱蜂玩爱疯玩 发表于 2017-11-21 18:28
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
爱蜂玩爱疯玩 发表于 2017-11-27 15:01
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 04:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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