冰封溪谷 发表于 2011-8-14 02:10

隐形阅读器InvisibleReader 倾情图文追码,爆破分析!对新手帮助很大!

本帖最后由 冰封溪谷 于 2011-8-14 02:13 编辑

大家好,我是ICey(冰封溪谷),现在带给大家是一个比较简单的软件详细分析,希望新手能认真看,可能会对你有所帮助!软件在下面!!

先把软件下下来。。一步步跟我走。。。

先用PEID查壳:


恩。。Borland Delphi 的。。。看来没有壳。。

这个是什么隐藏看书的。。这个我们不管。。来用od打开:

004F1010 > 55 push ebp
004F1011 8BEC mov ebp,esp
004F1013 83C4 F0 add esp,-0x10
004F1016 53 push ebx
004F1017 B8 849E4E00 mov eax,隐形阅读.004E9E84 ; d
004F101C E8 6390F1FF call 隐形阅读.0040A084
004F1021 8B1D 785C4F00 mov ebx,dword ptr ds: ; 隐形阅读.004FB2C0
004F1027 8B03 mov eax,dword ptr ds:
004F1029 E8 4EFEFCFF call 隐形阅读.004C0E7C
004F102E 8B03 mov eax,dword ptr ds:
004F1030 33D2 xor edx,edx
004F1032 E8 811BFDFF call 隐形阅读.004C2BB8
004F1037 8B03 mov eax,dword ptr ds:
004F1039 BA 84104F00 mov edx,隐形阅读.004F1084
004F103E E8 55F8FCFF call 隐形阅读.004C0898
004F1043 8B0D 105E4F00 mov ecx,dword ptr ds: ; 隐形阅读.004FB37C
004F1049 8B03 mov eax,dword ptr ds:
004F104B 8B15 48904E00 mov edx,dword ptr ds: ; 隐形阅读.004E90A0
004F1051 E8 3EFEFCFF call 隐形阅读.004C0E94
004F1056 8B0D DC5B4F00 mov ecx,dword ptr ds: ; 隐形阅读.004FB378
004F105C 8B03 mov eax,dword ptr ds:
004F105E 8B15 2C8B4E00 mov edx,dword ptr ds: ; 隐形阅读.004E8B84
004F1064 E8 2BFEFCFF call 隐形阅读.004C0E94
004F1069 8B03 mov eax,dword ptr ds:
004F106B E8 74FFFCFF call 隐形阅读.004C0FE4

标志性的Borland Delphi 的oep。。。

恩。。来查查ascll。。米有。。。unicode。。还是米有。。。

那就先打开软件注册界面看看:



额。。注册试试。。



这个明显不是messagebox。。所以下messagebox断点是没用的。。。

好吧,,看看区段:


可疑的区段。。我们oep居然不在text段。。进去看看。。、

恩查查ascll。。没有。。但是unicode。。。


额。。明的。。进去看看。。。

004E8F34    55            push ebp
004E8F35    8BEC            mov ebp,esp
004E8F37    6A 00         push 0x0
004E8F39    6A 00         push 0x0
004E8F3B    53            push ebx
004E8F3C    8BD8            mov ebx,eax
004E8F3E    33C0            xor eax,eax
004E8F40    55            push ebp
004E8F41    68 BE8F4E00   push 隐形阅读.004E8FBE
004E8F46    64:FF30         push dword ptr fs:
004E8F49    64:8920         mov dword ptr fs:,esp
004E8F4C    8D55 FC         lea edx,dword ptr ss:
004E8F4F    8B83 98030000   mov eax,dword ptr ds:
004E8F55    E8 527EFAFF   call 隐形阅读.00490DAC
004E8F5A    8B45 FC         mov eax,dword ptr ss:
004E8F5D    50            push eax
004E8F5E    8D55 F8         lea edx,dword ptr ss:
004E8F61    8B83 94030000   mov eax,dword ptr ds:
004E8F67    E8 407EFAFF   call 隐形阅读.00490DAC
004E8F6C    8B45 F8         mov eax,dword ptr ss:
004E8F6F    5A            pop edx
004E8F70    E8 5BC1FFFF   call 隐形阅读.004E50D0
004E8F75    84C0            test al,al
004E8F77    74 20         je X隐形阅读.004E8F99                                    ;看来只要改改这个就ok了。。
004E8F79    B8 D88F4E00   mov eax,隐形阅读.004E8FD8                  ; 注册成功!
004E8F7E    E8 61E9F8FF   call 隐形阅读.004778E4
004E8F83    8B15 705C4F00   mov edx,dword ptr ds:          ; 隐形阅读.004F5720
004E8F89    0FB612          movzx edx,byte ptr ds:
004E8F8C    8B83 A0030000   mov eax,dword ptr ds:
004E8F92    E8 357DFAFF   call 隐形阅读.00490CCC
004E8F97    EB 0A         jmp X隐形阅读.004E8FA3
004E8F99    B8 F08F4E00   mov eax,隐形阅读.004E8FF0                  ; 注册失败!请检查机器码与注册码是否正确!
004E8F9E    E8 41E9F8FF   call 隐形阅读.004778E4
004E8FA3    33C0            xor eax,eax
004E8FA5    5A            pop edx
004E8FA6    59            pop ecx
004E8FA7    59            pop ecx
004E8FA8    64:8910         mov dword ptr fs:,edx
004E8FAB    68 C58F4E00   push 隐形阅读.004E8FC5
004E8FB0    8D45 F8         lea eax,dword ptr ss:
004E8FB3    BA 02000000   mov edx,0x2
004E8FB8    E8 D3D8F1FF   call 隐形阅读.00406890
004E8FBD    C3            retn
004E8FBE^ E9 DDC7F1FF   jmp 隐形阅读.004057A0
004E8FC3^ EB EB         jmp X隐形阅读.004E8FB0
004E8FC5    5B            pop ebx
004E8FC6    59            pop ecx
004E8FC7    59            pop ecx
004E8FC8    5D            pop ebp
004E8FC9    C3            retn
恩。。看来004E8F77    74 20         je X隐形阅读.004E8F99nop掉似乎就ok了。。但是有这么简单喔喔。。。还分析什么。。。




但是我们还是试试。。nop掉保存。。注册。。。。注册成功。。恩

看说明说的非注册版有限制。。

什么:

不注册的缺点:使用时每过二十行左右会显示一次提示注册的信息。
注册价格:十元人民币。注册后则没有任何提示与限制。

有提示是吧。。好吧我们试试。。:




呵呵。。果然未注册啊。。

好吧。。。我们先追码吧。。。

要追码就要找到关键call。。什么是关键call。。

就是比较注册码的call。。软件之说以没有注册成功。。就是关键call计算对不上码。。

追码就要找关键call?

这里的关键call嘛。。一般关键call处于跳转的上方。。。
004E8F4F    8B83 98030000   mov eax,dword ptr ds:
004E8F55    E8 527EFAFF   call 隐形阅读.00490DAC
004E8F5A    8B45 FC         mov eax,dword ptr ss:
004E8F5D    50            push eax
004E8F5E    8D55 F8         lea edx,dword ptr ss:
004E8F61    8B83 94030000   mov eax,dword ptr ds:
004E8F67    E8 407EFAFF   call 隐形阅读.00490DAC
004E8F6C    8B45 F8         mov eax,dword ptr ss:
004E8F6F    5A            pop edx
004E8F70    E8 5BC1FFFF   call 隐形阅读.004E50D0      这个就是关键call。。控制下面的je是否跳转!!!
004E8F75    84C0            test al,al
004E8F77    74 20         je X隐形阅读.004E8F99
004E8F79    B8 D88F4E00   mov eax,隐形阅读.004E8FD8                  ; 注册成功!
004E8F7E    E8 61E9F8FF   call 隐形阅读.004778E4
004E8F83    8B15 705C4F00   mov edx,dword ptr ds:          ; 隐形阅读.004F5720
004E8F89    0FB612          movzx edx,byte ptr ds:
004E8F8C    8B83 A0030000   mov eax,dword ptr ds:
004E8F92    E8 357DFAFF   call 隐形阅读.00490CCC
004E8F97    EB 0A         jmp X隐形阅读.004E8FA3
004E8F99    B8 F08F4E00   mov eax,隐形阅读.004E8FF0                  ; 注册失败!请检查机器码与注册码是否正确!
004E8F9E    E8 41E9F8FF   call 隐形阅读.004778E4
004E8FA3    33C0            xor eax,eax
004E8FA5    5A            pop edx
004E8FA6    59            pop ecx
好吧。。我说的处于跳转的上方的只是大多数,还有谢软件就不解释了。。。

按照正常。。我们先从此函数头开始走。。。恩。。函数头是:

004E8F34    55            push ebp

在他的注册框里面随便填写的东西。。这里我用 ICey吧

先在 004E8F34 下断点。。 就是这个函数头下断点。。。

f8单步走。。走到:


004E8F5A    8B45 FC         mov eax,dword ptr ss:

时。堆栈线出现了ICey。。。说明上面的call是取编辑框的。。

继续。。。

走到:


时候。。堆栈线再次出现了机器码。。。说明上面的call是取注册码的。。ok下面的call一定就是比较的了、、、

f7步入吧:
004E50D0    55            push ebp
004E50D1    8BEC            mov ebp,esp
004E50D3    83C4 F8         add esp,-0x8
004E50D6    53            push ebx
004E50D7    56            push esi
004E50D8    8955 F8         mov dword ptr ss:,edx
004E50DB    8945 FC         mov dword ptr ss:,eax
004E50DE    8B45 FC         mov eax,dword ptr ss:
004E50E1    E8 9A17F2FF   call 隐形阅读.00406880
004E50E6    8B45 F8         mov eax,dword ptr ss:
004E50E9    E8 9217F2FF   call 隐形阅读.00406880
004E50EE    33C0            xor eax,eax
004E50F0    55            push ebp
004E50F1    68 63514E00   push 隐形阅读.004E5163
004E50F6    64:FF30         push dword ptr fs:
004E50F9    64:8920         mov dword ptr fs:,esp
004E50FC    8B55 F8         mov edx,dword ptr ss:
004E50FF    8B45 FC         mov eax,dword ptr ss:
004E5102    E8 55FFFFFF   call 隐形阅读.004E505C       这个是关键call
004E5107    84C0            test al,al
004E5109    74 3B         je X隐形阅读.004E5146   
004E510B    C605 20574F00 0>mov byte ptr ds:,0x1
004E5112    8B0D 44B34F00   mov ecx,dword ptr ds:
004E5118    B2 01         mov dl,0x1
004E511A    A1 A0884400   mov eax,dword ptr ds:
004E511F    E8 303BF6FF   call 隐形阅读.00448C54
004E5124    8BD8            mov ebx,eax
004E5126    8B45 F8         mov eax,dword ptr ss:
004E5129    50            push eax
004E512A    B9 80514E00   mov ecx,隐形阅读.004E5180                  ; RegKey
004E512F    BA 80514E00   mov edx,隐形阅读.004E5180                  ; RegKey
004E5134    8BC3            mov eax,ebx
004E5136    8B30            mov esi,dword ptr ds:
004E5138    FF56 08         call dword ptr ds:
004E513B    8BC3            mov eax,ebx
004E513D    E8 66FCF1FF   call 隐形阅读.00404DA8
004E5142    B3 01         mov bl,0x1
004E5144    EB 02         jmp X隐形阅读.004E5148
004E5146    33DB            xor ebx,ebx
004E5148    33C0            xor eax,eax
004E514A    5A            pop edx
004E514B    59            pop ecx
004E514C    59            pop ecx
004E514D    64:8910         mov dword ptr fs:,edx
004E5150    68 6A514E00   push 隐形阅读.004E516A
004E5155    8D45 F8         lea eax,dword ptr ss:
004E5158    BA 02000000   mov edx,0x2
004E515D    E8 2E17F2FF   call 隐形阅读.00406890
004E5162    C3            retn
004E5163^ E9 3806F2FF   jmp 隐形阅读.004057A0
004E5168^ EB EB         jmp X隐形阅读.004E5155
004E516A    8BC3            mov eax,ebx
004E516C    5E            pop esi
004E516D    5B            pop ebx
004E516E    59            pop ecx
004E516F    59            pop ecx
004E5170    5D            pop ebp
004E5171    C3            retn
恩。。看不出有什么。。有个regkey。。恩。。这个通过其他字符判断。。好像这个用于储存注册码的。。。

上面有个je :
004E5109   /74 3B         je X隐形阅读.004E5146

这下可以判断这个是否写入注册码的Regkey.ini。。。一般软件是注册成功才会写入。。这个也不例外。。

既然这样。。我们马上判断
004E5102    E8 55FFFFFF   call 隐形阅读.004E505C

属于关键call。。。恩。。步入。。


好吧。。到了这里我们步过。。中途你会看到注册码与机器码的交替出现。。。。

当走到:

004E5097    8B45 F4         mov eax,dword ptr ss:
时:



哈哈。。。

堆栈线中可疑的码出现了。。拿去试试吧。。看看是不是注册码。。。

恩。。果然不出所料。。



这下注册成功了。。还在目录下生成一个regkey.ini用于记录的。。

看看有没有限制。。恩。。没有出4秒限制。。。

这样简单的追码成功。 。。如果你还想知道怎么产生的。。你就继续下去吧。。这里我就不讲解了。。

下面是爆破。。

根据上面追码的原理我们很容易爆破。。他不是有个比较call吗。。我们来改改。。



004E505C /$ 55 push ebp
004E505D |. 8BEC mov ebp,esp
004E505F |. 83C4 F4 add esp,-0xC
004E5062 |. 53 push ebx
004E5063 |. 33C9 xor ecx,ecx
004E5065 |. 894D F4 mov ,ecx
004E5068 |. 8955 F8 mov ,edx
004E506B |. 8945 FC mov ,eax
004E506E |. 8B45 FC mov eax,
004E5071 |. E8 0A18F2FF call 隐形阅读.00406880
004E5076 |. 8B45 F8 mov eax,
004E5079 |. E8 0218F2FF call 隐形阅读.00406880
004E507E |. 33C0 xor eax,eax
004E5080 |. 55 push ebp
004E5081 |. 68 C0504E00 push 隐形阅读.004E50C0
004E5086 |. 64:FF30 push dword ptr fs:
004E5089 |. 64:8920 mov dword ptr fs:,esp
004E508C |. 8D55 F4 lea edx,
004E508F |. 8B45 FC mov eax,
004E5092 |. E8 D1FDFFFF call 隐形阅读.004E4E68
004E5097 |. 8B45 F4 mov eax,
004E509A |. 8B55 F8 mov edx,
004E509D 3BC0 cmp eax,eax ; 这个call比较注册码      我们将这里改为cmp eax,eax
004E509F 90 nop
004E50A0 90 nop
004E50A1 90 nop
004E50A2 |. 0F94C3 sete bl
004E50A5 |. 33C0 xor eax,eax
004E50A7 |. 5A pop edx
004E50A8 |. 59 pop ecx
004E50A9 |. 59 pop ecx
004E50AA |. 64:8910 mov dword ptr fs:,edx
004E50AD |. 68 C7504E00 push 隐形阅读.004E50C7
004E50B2 |> 8D45 F4 lea eax,
004E50B5 |. BA 03000000 mov edx,0x3
004E50BA |. E8 D117F2FF call 隐形阅读.00406890
004E50BF \. C3 retn
004E50C0 .^ E9 DB06F2FF jmp 隐形阅读.004057A0
004E50C5 .^ EB EB jmp X隐形阅读.004E50B2
004E50C7 . 8BC3 mov eax,ebx
004E50C9 . 5B pop ebx
004E50CA . 8BE5 mov esp,ebp
004E50CC . 5D pop ebp
004E50CD . C3 retn

看上面代码

将004E509D      E8 CE1EF2FF   call 隐形阅读.00406F70                     ;这个call比较注册码
改为:
cmp eax,eax   

就可以达到爆破的目的。。。


上面不是有:

004E5097|.8B45 F4       mov eax,
004E509A|.8B55 F8       mov edx,


其中eax是真码。。。edx是我们 的输入码

我们让他真码与真码比较就ok了

是不是很简单啊。。。

ok 教程完毕。希望这对你有所帮助。。

转载请注明:

www.52pojie.cn By ICey

下面是用到软件:



冰封溪谷 发表于 2011-8-14 02:11

沙发自己的

低调(d-iao) 发表于 2011-8-14 02:38

想给你评分 发现分数不是过了12点加的 没分数了

幸扬 发表于 2011-8-14 02:52

太好了。。这样的教程才是需要的

gtyy520 发表于 2011-8-14 04:15

看看。。。 支持。。。

老万 发表于 2011-8-14 07:06

写得很详细,学习了

ps122 发表于 2011-8-14 07:22

很不错的教程,谢谢分享

captinjack 发表于 2011-8-14 08:36

多谢楼主的教程

q69650411 发表于 2011-8-14 10:03

不错的教程感谢楼主~

252427414 发表于 2011-8-14 10:12

我还是不太懂
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 隐形阅读器InvisibleReader 倾情图文追码,爆破分析!对新手帮助很大!