yijun 发表于 2005-4-9 19:38:31

简单算法一

【软件名称】:crackme1  
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【破解工具】:OD

———————————————————————————————————————————
 
一个以前学习过的CRACKME的算法~~~~~~~~~~~

【破解过程】:

004010C9    56            push esi   //在此下断
004010CA    57            push edi
004010CB    51            push ecx
004010CC    33F6            xor esi,esi
004010CE    33FF            xor edi,edi
004010D0    B9 08000000   mov ecx,8                              ; 循环8次
004010D5    BE 44304000   mov esi,echap511.00403044                ; 假码
004010DA    8036 32         xor byte ptr ds:,32               ; 假码每字节与32取异或
004010DD    46            inc esi
004010DE^ E2 FA         loopd short echap511.004010DA            ; 未完返回
004010E0    BE 44304000   mov esi,echap511.00403044
004010E5    B9 04000000   mov ecx,4                              ; 循环4次
004010EA    8A06            mov al,byte ptr ds:               ;
004010EC    8A5E 01         mov bl,byte ptr ds:
004010EF    32C3            xor al,bl                              ;把变化后的数前后取异或
004010F1    8887 4C304000   mov byte ptr ds:,al          ;
004010F7    83C6 02         add esi,2
004010FA    47            inc edi
004010FB^ E2 ED         loopd short echap511.004010EA
004010FD    BE 4C304000   mov esi,echap511.0040304C               ;将生成的4个数变成2个
00401102    8A06            mov al,byte ptr ds:
00401104    8A5E 01         mov bl,byte ptr ds:
00401107    32C3            xor al,bl
00401109    8A5E 02         mov bl,byte ptr ds:
0040110C    8A4E 03         mov cl,byte ptr ds:
0040110F    32D9            xor bl,cl
00401111    32C3            xor al,bl
00401113    B9 08000000   mov ecx,8
00401118    BE 44304000   mov esi,echap511.00403044
0040111D    3006            xor byte ptr ds:,al               ; 将生成的1个数与原来的取异或
0040111F    46            inc esi
00401120^ E2 FB         loopd short echap511.0040111D
00401122    B9 08000000   mov ecx,8
00401127    BE 44304000   mov esi,echap511.00403044
0040112C    BF 08304000   mov edi,echap511.00403008                ; 正确结果
00401131    8A06            mov al,byte ptr ds:
00401133    3A07            cmp al,byte ptr ds:
00401135    75 1D         jnz short echap511.00401154               ;关键跳



———————————————————————————————————————————

【Crack_总结】:

如果输入12345678
机器码                3132333435363738
与32异或            030001060704050A----(1)
8变4为                  03      07      03      0F
4变2为                      04            0C
2变1为                              08                ----(2)
(1)与08取异或          0B08090E0F0C0D02

00403008 内正确的为    7118591B7942454C

根据正确反推注册码:(关键是如何计算(2))
                  由算法可知(2)是由机器码反复取异或得到,其实由它的正确的密码重复这                  一算法也可求的(2),实验得出。缺少证明。

机器码                7118591B7942454C
8变4为                  69      42      3B      09
4变2为                      2B            32
2变1为                              19                ----正确的密码的(2)值应为19

接着反推正确的注册码:
机器码                  7118591B7942454C
与19取异或            68014002605B5C55
与32取异或            5A33723052696E67
查表得正确的注册码为:    Z3r0Ring

cxx17 发表于 2006-3-18 21:19:13

不错,学习!

godhack 发表于 2006-5-3 16:03:13

thank you!!!收了

chenlinyong36 发表于 2006-6-14 23:48:58

学习了~~

秋风下的落叶 发表于 2006-6-21 09:12:57

秋风下的落叶 发表于 2006-6-21 09:13:58

larry_wang 发表于 2007-11-25 11:50:58

学习了,谢谢,下载一个

ak47ak47 发表于 2008-10-3 15:53:41

精品呀!太好了,正在学这个!

a13639875277 发表于 2008-10-9 19:34:46

有难度,学习中。。。

老海 发表于 2008-10-12 06:42:40

以前没注意,今天看后感到确实不错。
页: [1] 2
查看完整版本: 简单算法一