KaQqi 发表于 2016-10-2 09:28

160cm之001 爆破、追码 by cqr2287

本帖最后由 cqr2287 于 2016-10-15 14:26 编辑

最近闲的无聊,在家不能录视频,又有家长看管着,玩cm写帖子能增加技术含量。
160cm是从看雪老师的论坛上下的。我也玩玩。
现在分析001
(求救,分割线怎么用)

static/image/hrline/2.gif

软件有两个验证。如下图


载入od,目测像个Delphi程序,懒得查壳,下按钮事件不方便,这软好多按钮。
先干第一个验证。第一个提示sorry,那么字符串搜索sorry。
0042FA4D    A1 6C174300   mov eax,dword ptr ds:
0042FA52    E8 D96EFDFF   call Acid_bur.00406930
0042FA57    83F8 04         cmp eax,0x4
0042FA5A    7D 1D         jge short Acid_bur.0042FA79
0042FA5C    6A 00         push 0x0
0042FA5E    B9 74FB4200   mov ecx,Acid_bur.0042FB74                ; Try Again!
0042FA63    BA 80FB4200   mov edx,Acid_bur.0042FB80                ; Sorry , The serial is incorect !
0042FA68    A1 480A4300   mov eax,dword ptr ds:
0042FA6D    8B00            mov eax,dword ptr ds:

try again是下一个验证的提示,所以这个不对。找下个字符串
0042FB07    B9 CCFB4200   mov ecx,Acid_bur.0042FBCC                ; Congratz !!
0042FB0C    BA D8FB4200   mov edx,Acid_bur.0042FBD8                ; Good job dude =)
0042FB11    A1 480A4300   mov eax,dword ptr ds:
0042FB16    8B00            mov eax,dword ptr ds:
0042FB18    E8 53A6FFFF   call Acid_bur.0042A170
0042FB1D    EB 18         jmp short Acid_bur.0042FB37
0042FB1F    6A 00         push 0x0
0042FB21    B9 74FB4200   mov ecx,Acid_bur.0042FB74                ; Try Again!
0042FB26    BA 80FB4200   mov edx,Acid_bur.0042FB80                ; Sorry , The serial is incorect !

这个应该是了。因为第一个验证肯定不会调用第二个验证的失败提示,所以jge一定会跳。我们在jge后面下段
f9运行,输入假的注册码。
断下后,f8跟踪之。

此处算出真马。这个便是第一个验证的真马。
继续跟踪。
0042FB03   /75 1A         jnz short Acid_bur.0042FB1F
0042FB05   |6A 00         push 0x0
0042FB07   |B9 CCFB4200   mov ecx,Acid_bur.0042FBCC                ; Congratz !!
0042FB0C   |BA D8FB4200   mov edx,Acid_bur.0042FBD8                ; Good job dude =)
0042FB11   |A1 480A4300   mov eax,dword ptr ds:
0042FB16   |8B00            mov eax,dword ptr ds:
0042FB18   |E8 53A6FFFF   call Acid_bur.0042A170
0042FB1D   |EB 18         jmp short Acid_bur.0042FB37
0042FB1F   \6A 00         push 0x0
0042FB21    B9 74FB4200   mov ecx,Acid_bur.0042FB74                ; Try Again!
0042FB26    BA 80FB4200   mov edx,Acid_bur.0042FB80                ; Sorry , The serial is incorect !
0042FB2B    A1 480A4300   mov eax,dword ptr ds:
0042FB30    8B00            mov eax,dword ptr ds:
0042FB32    E8 39A6FFFF   call Acid_bur.0042A170
0042FB37    33C0            xor eax,eax

这个jnz跳过了成功。把jnz Nop掉即可爆破。
下面搞第二个验证

static/image/hrline/4.gif
上面已经分析过,try again是第二个验证的信息内容。所以向上回溯
0042F9FE    E8 55B0FEFF   call Acid_bur.0041AA58

在push地下call下断点。
运行跟踪之。

what???那就在jge下断点。

一样没用。去找别的try again看看。

有2个。在第一个上面下端看看。
0042F4D0    E8 2745FDFF   call Acid_bur.004039FC
0042F4D5    75 1A         jnz short Acid_bur.0042F4F1
0042F4D7    6A 00         push 0x0
0042F4D9    B9 64F54200   mov ecx,Acid_bur.0042F564                ; Congratz!
0042F4DE    BA 70F54200   mov edx,Acid_bur.0042F570                ; God Job dude !! =)
0042F4E3    A1 480A4300   mov eax,dword ptr ds:
0042F4E8    8B00            mov eax,dword ptr ds:
0042F4EA    E8 81ACFFFF   call Acid_bur.0042A170
0042F4EF    EB 18         jmp short Acid_bur.0042F509
0042F4F1    6A 00         push 0x0
0042F4F3    B9 84F54200   mov ecx,Acid_bur.0042F584                ; Failed!
0042F4F8    BA 8CF54200   mov edx,Acid_bur.0042F58C                ; Try Again!!
0042F4FD    A1 480A4300   mov eax,dword ptr ds:
0042F502    8B00            mov eax,dword ptr ds:
0042F504    E8 67ACFFFF   call Acid_bur.0042A170
0042F509    33C0            xor eax,eax
0042F50B    5A            pop edx                                  ; 0012FA2C

在第一个上面断下了。把jnz改成nop就成功爆破了。
想要追码,还需要向上回溯。
0042F46D    C3            retn
0042F46E    8BC0            mov eax,eax
0042F470    55            push ebp
0042F471    8BEC            mov ebp,esp

0042F46D    C3            retn
0042F46E    8BC0            mov eax,eax
0042F470    55            push ebp
0042F471    8BEC            mov ebp,esp

明白了吗?
试试。

啊哈,我英语不错滴。

static/image/hrline/4.gif
好啦,吃早饭,各位88


KaQqi 发表于 2016-10-2 10:03

MAXtoDEATH 发表于 2016-10-2 09:51
前排膜,顺便问下如果字符串被线性加密该如何处理?控件下断吗?

软件无论如何加密,最终呈现在你眼前的还是内容。你可以在内存中查找,因为他们最终要解密到内存

hahap 发表于 2016-10-4 21:47

cqr2287 发表于 2016-10-4 09:21
不知道,我只搞32位逆向。脱壳方法应该差不多,,主要是修复需要跨平台。32位的比较简单,不知64位是什么 ...

谢谢回复,有机会你尝试下,我这有样本

万一行了呢 发表于 2016-10-2 09:35

必须支持技术贴

_知鱼之乐 发表于 2016-10-2 09:44

支持技术贴

fsy1234563 发表于 2016-10-2 09:45

谢谢分享,学习到了啊

KaQqi 发表于 2016-10-2 09:45

感谢@Sound 大牛的支持

MAXtoDEATH 发表于 2016-10-2 09:51

前排膜,顺便问下如果字符串被线性加密该如何处理?控件下断吗?

黑龍 发表于 2016-10-2 10:45

膜拜大神

Very_good 发表于 2016-10-2 10:47

黑龍 发表于 2016-10-2 10:45
膜拜大神

你好谦虚啊

黑龍 发表于 2016-10-2 10:48

Very_good 发表于 2016-10-2 10:47
你好谦虚啊

菜鸟一个
页: [1] 2 3 4
查看完整版本: 160cm之001 爆破、追码 by cqr2287