【破解作者】 落魄浪子
【使用工具】 FlyOD1.1修改版
【破解平台】 Win9x/NT/2000/XP
【软件名称】 Crob FTP Server中文专业版
【下载地址】 http://www.crob.net
【加壳方式】 ASPack 2.1 -> Alexey Solodovnikov [Overlay]
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
最近由于工作忙,很长是间没有来这里了。呵呵。今天下了个软件,主要是想在自己的电脑上建个网站,就找到了她“Crob FTP Server中文专业版”,没有注册有21天的限制。注册码不对时点注册,注册框没有任何提示就退出。正确也没有提示,只会把标题栏的未注册字样去掉。


怎么找到下面的,呵呵 

00445403    .  3978 F8     cmp dword ptr ds:[eax-8],edi   比较注册码是否为空
00445406    .  0F84 5E0800>je 1.00445C6A
0044540C    .  8B8E 640500>mov ecx,dword ptr ds:[esi+564]
00445412    .  3979 F8     cmp dword ptr ds:[ecx-8],edi   比较email是不为空
00445415    .  0F84 4F0800>je 1.00445C6A
0044541B    .  8B96 680500>mov edx,dword ptr ds:[esi+568]
00445421    .  8D9E 680500>lea ebx,dword ptr ds:[esi+568]
00445427    .  397A F8     cmp dword ptr ds:[edx-8],edi   比较注册名是否为空
0044542A    .  0F84 3A0800>je 1.00445C6A
00445430    .  8BCE        mov ecx,esi
00445432    .  E8 D9090000 call 1.00445E10
00445437    .  8B45 00     mov eax,dword ptr ss:[ebp]     注册码入eax
0044543A    .  897C24 2C   mov dword ptr ss:[esp+2C],edi
0044543E    .  8B40 F8     mov eax,dword ptr ds:[eax-8]    取注册码长度入eax
00445441    .  85C0        test eax,eax
00445443    .  7E 1C       jle short 1.00445461
00445445    >  8BCE        mov ecx,esi
00445447    .  E8 C4090000 call 1.00445E10               
0044544C    .  8B45 00     mov eax,dword ptr ss:[ebp]
0044544F    .  803C38 2D   cmp byte ptr ds:[eax+edi],2D    查找注码里是否有字符"-"
00445453    .  75 04       jnz short 1.00445459
00445455    .  FF4424 2C   inc dword ptr ss:[esp+2C]
00445459    >  8B48 F8     mov ecx,dword ptr ds:[eax-8]
0044545C    .  47          inc edi
0044545D    .  3BF9        cmp edi,ecx
0044545F    .^ 7C E4       jl short 1.00445445             是否查找完成,没有则继续.
00445461    >  8BCE        mov ecx,esi
00445463    .  E8 A8090000 call 1.00445E10                 
00445468    .  837C24 2C 0>cmp dword ptr ss:[esp+2C],3     注册码中是否有3个字符"-"
0044546D    .  0F8C F70700>jl 1.00445C6A
00445473    .  6A 2D       push 2D
00445475    .  8BCD        mov ecx,ebp
00445477    .  E8 40510B00 call <jmp.&MFC42.#6874_CString::Remove>  把注册码中的字符"-"去掉
0044547C    .  8B4D 00     mov ecx,dword ptr ss:[ebp]
0044547F    .  8379 F8 1C  cmp dword ptr ds:[ecx-8],1C  去掉字符“-”后注册码长度是否小于28
--------------------------------------------------------------------------------------
0044557F    .  68 649F5500 push 1.00559F64                           ;  ASCII "nover"
00445584    .  E8 F7490B00 call <jmp.&MFC42.#537_CString::CString>
00445589    .  8BCF        mov ecx,edi                               ; |
0044558B    .  C64424 60 0>mov byte ptr ss:[esp+60],5                ; |
00445590    .  E8 9BB8FEFF call 1.00430E30                           ; \1.00430E30  算法call进入

00430E30   /$  6A FF       push -1     进入到这里
00430E32   |.  68 600F5000 push 1.00500F60                           ;  SE handler installation
00430E37   |.  64:A1 00000>mov eax,dword ptr fs:[0]
00430E3D   |.  50          push eax
00430E3E   |.  64:8925 000>mov dword ptr fs:[0],esp
----------------------------------------------------------------------------------------
00430DC9   |> \8B45 EC     mov eax,dword ptr ss:[ebp-14]
00430DCC   |.  8B4D F0     mov ecx,dword ptr ss:[ebp-10]
00430DCF   |.  8B16        mov edx,dword ptr ds:[esi]
00430DD1   |.  53          push ebx
00430DD2   |.  50          push eax
00430DD3   |.  51          push ecx
00430DD4   |.  8BCE        mov ecx,esi
00430DD6   |.  FF52 08     call dword ptr ds:[edx+8]              进入
----------------------------------------------------------------------------------------
004AD5A1    .  E8 5AF6FFFF call 1.004ACC00                       ; \重点进入
004AD5A6    .  8B4D 08     mov ecx,dword ptr ss:[ebp+8]
004AD5A9    .  8B5424 10   mov edx,dword ptr ss:[esp+10]
004AD5AD    .  03F9        add edi,ecx
004AD5AF    .  03D9        add ebx,ecx
004AD5B1    .  42          inc edx
004AD5B2    .  8BC6        mov eax,esi
-----------------------------------------------------------------------------------------004ACC00   /$  64:A1 00000>mov eax,dword ptr fs:[0]
004ACD01   |.  E8 DAF3FFFF call 1.004AC0E0                       ; \1.004AC0E0  进入
004ACD06   |.  E9 93020000 jmp 1.004ACF9E

004AC2BD   |> \8B4424 64   mov eax,dword ptr ss:[esp+64]    ;  字符“nover"入eax记为a1
004AC2C1   |.  33D2        xor edx,edx                      ;  清空edx
004AC2C3   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC2C5   |.  8B5D 38     mov ebx,dword ptr ss:[ebp+38]    ;  字符”M_hc“入ebx记为b1"4D5F6863
004AC2C8   |.  8A10        mov dl,byte ptr ds:[eax]         ;  A1的第一位n入dl记为n1
004AC2CA   |.  8A48 01     mov cl,byte ptr ds:[eax+1]       ;  A1的第二位o入cl记为n2
004AC2CD   |.  C1E2 18     shl edx,18                       ;  n1左移18次记为n3
004AC2D0   |.  40          inc eax
004AC2D1   |.  8B7D 3C     mov edi,dword ptr ss:[ebp+3C]    ;  字符”PUHM“入edi记为b2"5055484d
004AC2D4   |.  C1E1 10     shl ecx,10                       ;  n2左移10次记为n4
004AC2D7   |.  0BD1        or edx,ecx                       ;  n3与n4作或运算记为n5”6E6F0000"
004AC2D9   |.  40          inc eax
004AC2DA   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC2DC   |.  8A28        mov ch,byte ptr ds:[eax]         ;  A1的第三位v入ch记为n6
004AC2DE   |.  0BD1        or edx,ecx                       ;  n5与n6作或运算记为n7"6E6F76"
004AC2E0   |.  40          inc eax
004AC2E1   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC2E3   |.  8A08        mov cl,byte ptr ds:[eax]         ;  A1的第四位e入cl记为n8
004AC2E5   |.  0BD1        or edx,ecx                       ;  n7与n8作或运算记为n9"6E6F7665"
004AC2E7   |.  40          inc eax
004AC2E8   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC2EA   |.  33D3        xor edx,ebx                      ;  n9与b1作异或运算记为n10"0D072928"
004AC2EC   |.  8A08        mov cl,byte ptr ds:[eax]         ;  A1的第五位r入cl记为n11
004AC2EE   |.  33DB        xor ebx,ebx                      ;  清空ebx
004AC2F0   |.  8BF1        mov esi,ecx                      ;  n11入esi="72"
004AC2F2   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC2F4   |.  8A48 01     mov cl,byte ptr ds:[eax+1]       ;  A1的第六位0入cl记为n12
004AC2F7   |.  895424 18   mov dword ptr ss:[esp+18],edx    ;  n10放入内存地址0012ec00"0D072928"
004AC2FB   |.  C1E6 18     shl esi,18                       ;  n11左移18次记为n13"72000000"
004AC2FE   |.  40          inc eax
004AC2FF   |.  C1E1 10     shl ecx,10                       ;  n12左移10次记为n14
004AC302   |.  0BF1        or esi,ecx                       ;  n13与n14作或运算记为n15“72000000”
004AC304   |.  40          inc eax
004AC305   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC307   |.  8A28        mov ch,byte ptr ds:[eax]         ;  A1的第七位0入ch记为n16
004AC309   |.  0BF1        or esi,ecx                       ;  n15与n16作或运算记为n17"72000000"
004AC30B   |.  40          inc eax
004AC30C   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC30E   |.  8A08        mov cl,byte ptr ds:[eax]         ;  A1的第八位0入cl记为n18
004AC310   |.  0BF1        or esi,ecx                       ;  n17与n18作或运算记为n19"72000000"
004AC312   |.  40          inc eax
004AC313   |.  33C9        xor ecx,ecx                      ;  清空ecx
004AC315   |.  33F7        xor esi,edi                      ;  n19与b2作异或运算记为n20"3f485550"
004AC317   |.  8A08        mov cl,byte ptr ds:[eax]         ;  A1的第九位0入cl记为n21
004AC319   |.  8A58 01     mov bl,byte ptr ds:[eax+1]       ;  A1的第十位0入bl记为n22
004AC31C   |.  C1E1 18     shl ecx,18                       ;  n21左移18次记为n23
004AC31F   |.  40          inc eax
004AC320   |.  897424 14   mov dword ptr ss:[esp+14],esi    ;  n20放入内存地址0012ebfc"3F485550"
004AC324   |.  C1E3 10     shl ebx,10                       ;  n22左移10次记为n24
004AC327   |.  0BCB        or ecx,ebx                       ;  n23与n24作或运算记为n25
004AC329   |.  40          inc eax
004AC32A   |.  33DB        xor ebx,ebx                      ;  清空ebx
004AC32C   |.  8A38        mov bh,byte ptr ds:[eax]         ;  A1的第十一位0入bh记为n26
004AC32E   |.  0BCB        or ecx,ebx                       ;  n25与n26作或运算记为n27
004AC330   |.  40          inc eax
004AC331   |.  33DB        xor ebx,ebx                      ;  清空ebx
004AC333   |.  8A18        mov bl,byte ptr ds:[eax]         ;  A1的第十二位0入bl记为n28
004AC335   |.  0BCB        or ecx,ebx                       ;  n27与n28作或运算记为n29
004AC337   |.  8B5D 40     mov ebx,dword ptr ss:[ebp+40]    ;  字符“92iO"入ebx记为b3"4F693239"
004AC33A   |.  40          inc eax
004AC33B   |.  33CB        xor ecx,ebx                      ;  N29与b3作异或运算记为n30"4F693239"
004AC33D   |.  33DB        xor ebx,ebx                      ;  清空ebx
004AC33F   |.  894C24 1C   mov dword ptr ss:[esp+1C],ecx    ;  n30放入内存地址0012ec04"4F693239"
004AC343   |.  8A18        mov bl,byte ptr ds:[eax]         ;  A1的第十三位0入bl记为n31
004AC345   |.  8BF3        mov esi,ebx                      ;  n31入esi
004AC347   |.  33DB        xor ebx,ebx                      ;  清空ebx
004AC349   |.  8A58 01     mov bl,byte ptr ds:[eax+1]       ;  A1的第十四位0入bl记为n32
004AC34C   |.  C1E6 18     shl esi,18                       ;  n31左移18次记为n33
004AC34F   |.  40          inc eax
004AC350   |.  C1E3 10     shl ebx,10                       ;  n32左移10次记为n34
004AC353   |.  0BF3        or esi,ebx                       ;  n33与n34作或运算记为n35
004AC355   |.  40          inc eax
004AC356   |.  33DB        xor ebx,ebx                      ;  清空ebx
004AC358   |.  8A38        mov bh,byte ptr ds:[eax]         ;  A1的第十五位0入bh记为n36
004AC35A   |.  8A58 01     mov bl,byte ptr ds:[eax+1]       ;  A1的第十六位0入bl记为n37
004AC35D   |.  8B45 44     mov eax,dword ptr ss:[ebp+44]    ;  字符”4873“放入eax记为b4"33373834"
004AC360   |.  0BDE        or ebx,esi                       ;  ebx与n35作或运算记为n38
004AC362   |.  8BB5 D80300>mov esi,dword ptr ss:[ebp+3D8]   ;  字符"E"入esi记为n39
004AC368   |.  33C3        xor eax,ebx                      ;  b4与n38作异或运算记为n40"33373834"
004AC36A   |.  897424 20   mov dword ptr ss:[esp+20],esi    ;  n39放入内存地址0012ec08"E"
004AC36E   |.  894424 10   mov dword ptr ss:[esp+10],eax    ;  n40放入内存地址0012ebf8"33373834"
004AC372   |.  83FE 01     cmp esi,1
004AC375   |.  0F8E 350100>jle 1.004AC4B0
004AC37B   |.  83C5 60     add ebp,60
004AC37E   |.  4E          dec esi                          ;  n39减一记为n41
004AC37F   |.  897424 64   mov dword ptr ss:[esp+64],esi    ;  n41放入内存地址0012ec4c"D"
004AC383   |>  33DB        /xor ebx,ebx                     ;  清空ebx
004AC385   |.  83C5 20     |add ebp,20
004AC388   |.  8ADC        |mov bl,ah                       ;  n40的第二位放入bl记为n42"38"
004AC38A   |.  33C0        |xor eax,eax                     ;  清空eax
004AC38C   |.  8A4424 1E   |mov al,byte ptr ss:[esp+1E]     ;  n30的第二位”i“入al记为n43"69"
004AC390   |.  8B349D 4867>|mov esi,dword ptr ds:[ebx*4+526>;  n42*4+526748查表得"07090E07"记为n44入esi
004AC397   |.  8B3C85 4863>|mov edi,dword ptr ds:[eax*4+526>;  n30*4+526348查表得"10E9F9F9"记为n45入edi
004AC39E   |.  33C0        |xor eax,eax                     ;  清空eax
004AC3A0   |.  8A4424 17   |mov al,byte ptr ss:[esp+17]     ;  n20的第一位”?“入al记为n46"3f"
004AC3A4   |.  33F7        |xor esi,edi                     ;  n44与n45作异或运算记为n47”17E0F7FE“
004AC3A6   |.  8B7D DC     |mov edi,dword ptr ss:[ebp-24]   ;  b2入edi"4D485550"
004AC3A9   |.  8B1C85 485F>|mov ebx,dword ptr ds:[eax*4+525>;  n20*4+525f48查表得"EA75759F"记为n48入ebx
004AC3B0   |.  8BC2        |mov eax,edx                     ;  n9入eax
004AC3B2   |.  25 FF000000 |and eax,0FF                     ;  n9与0FF作与运算记为n49"00000028"
004AC3B7   |.  33F3        |xor esi,ebx                     ;  n47与n48作异或运算记为n50”FD958261“
004AC3B9   |.  8B1C85 486B>|mov ebx,dword ptr ds:[eax*4+526>;  n49*4+526b48查表得”34345C68“记为n51
004AC3C0   |.  33C0        |xor eax,eax                     ;  清空eax
004AC3C2   |.  8A4424 12   |mov al,byte ptr ss:[esp+12]     ;  n40的第二位”7“入al记为n52
004AC3C6   |.  33F3        |xor esi,ebx                     ;  n50与n51作异或运算记为n53”C9A1DE09“
004AC3C8   |.  33DB        |xor ebx,ebx                     ;  清空ebx
004AC3CA   |.  33F7        |xor esi,edi                     ;  n53与b2作异或运算记为n54”84E98B59“
004AC3CC   |.  8A5C24 1F   |mov bl,byte ptr ss:[esp+1F]     ;  B3的第四位”O“入bl记为n55
004AC3D0   |.  8B3C85 4863>|mov edi,dword ptr ds:[eax*4+526>;  n52*4+526348查表得”"B52F9A9A"记为n56入edi
004AC3D7   |.  8B049D 485F>|mov eax,dword ptr ds:[ebx*4+525>;  n55*4+525f48查表得“13848487”记为n57入eax
004AC3DE   |.  33F8        |xor edi,eax                     ;  n57与n56作异或运算记为n58"A6AB1E0D"
004AC3E0   |.  33C0        |xor eax,eax                     ;  清空eax
004AC3E2   |.  8AC6        |mov al,dh                       ;  n10的第二位“)”入al记为n58
004AC3E4   |.  8B1485 4867>|mov edx,dword ptr ds:[eax*4+526>;  n58*4+526748查表得“A5F451A5“记为n59入edx
004AC3EB <>|.  8B4424 14   |mov eax,dword ptr ss:[esp+14]   ;  n20入eax
004AC3EF   |.  33FA        |xor edi,edx                     ;  n58与n59作异或运算记为n60”035F4FA8“
004AC3F1   |.  8BD0        |mov edx,eax                     ;  N20入edx
004AC3F3   |.  81E2 FF0000>|and edx,0FF                     ;  n20与0FF作与运算记为n61"00000050"
004AC3F9   |.  8B1C95 486B>|mov ebx,dword ptr ds:[edx*4+526>;  n61*4+526b48查表得”5353F5A6“记为N62入ebx
004AC400   |.  33D2        |xor edx,edx                     ;  清空edx
004AC402   |.  8A5424 13   |mov dl,byte ptr ss:[esp+13]     ;  n40的第四位”3“入dl记为n63
004AC406   |.  33FB        |xor edi,ebx                     ;  n60与n62作异或运算记为n64"500CBA0E"
004AC408   |.  8B5D E0     |mov ebx,dword ptr ss:[ebp-20]   ;  n30入ebx
004AC40B   |.  33FB        |xor edi,ebx                     ;  n64与n30作异或运算记为n65"1F658837"
004AC40D   |.  33DB        |xor ebx,ebx                     ;  清空ebx
004AC40F   |.  8ADC        |mov bl,ah                       ;  n20的第二位”U"入bl记为n66
004AC411   |.  8B0495 485F>|mov eax,dword ptr ds:[edx*4+525>;  n63*4+525f48查表得“9DC3C35E”记为n67入eax
004AC418   |.  8B149D 4867>|mov edx,dword ptr ds:[ebx*4+526>;  n66*4+526748查表得“FC1FE3FC”记为n68入edx
004AC41F   |.  33C2        |xor eax,edx                     ;  n67与n68作异或运算记为n69“61DC20A2”
004AC421   |.  33D2        |xor edx,edx                     ;  清空edx
004AC423   |.  8A5424 1A   |mov dl,byte ptr ss:[esp+1A]     ;  n10的第二位“07”入dl记为n70
004AC427   |.  8B1C95 4863>|mov ebx,dword ptr ds:[edx*4+526>;  n70*4+526348查表得“5491C5C5”记为n71入ebx
004AC42E   |.  8BD1        |mov edx,ecx                     ;  n30入edx
004AC430   |.  81E2 FF0000>|and edx,0FF                     ;  n30与OFF作与运算记为n72"39"
004AC436   |.  33C3        |xor eax,ebx                     ;  n69与n71作异或运算记为n73"354DE567"
004AC438   |.  8B1C95 486B>|mov ebx,dword ptr ds:[edx*4+526>;  n72*4+526b48查表得“12123624”记为n74入ebx
004AC43F   |.  8B55 E4     |mov edx,dword ptr ss:[ebp-1C]   ;  n40入edx
004AC442   |.  33C3        |xor eax,ebx                     ;  n73与n74作异或运算记为n75“275FD343”
004AC444   |.  33C2        |xor eax,edx                     ;  n75与N40作异或运算记为n76"1468EB77“
004AC446   |.  33D2        |xor edx,edx                     ;  清空edx
004AC448   |.  8AD5        |mov dl,ch                       ;  n30的第二位”2“入dl记为n77
004AC44A   |.  33C9        |xor ecx,ecx                     ;  清空ecx
004AC44C   |.  8A4C24 16   |mov cl,byte ptr ss:[esp+16]     ;  n20的第二位”H“入cl记为n78
004AC450   |.  897424 14   |mov dword ptr ss:[esp+14],esi   ;  n54入内存地址0012ebfc"84e98b59"
004AC454   |.  8B1495 4867>|mov edx,dword ptr ds:[edx*4+526>;  n77*4+526748查表得”23654623“记为n79入edx
004AC45B   |.  8B7424 64   |mov esi,dword ptr ss:[esp+64]   ;  n41入esi
004AC45F   |.  8B1C8D 4863>|mov ebx,dword ptr ds:[ecx*4+526>;  n78*4+526348查表得”F6A45252“记为n80入ebx
004AC466   |.  33C9        |xor ecx,ecx                     ;  清空ecx
004AC468   |.  8A4C24 1B   |mov cl,byte ptr ss:[esp+1B]     ;  n10的第一位"0D"入cl记为n81
004AC46C   |.  33D3        |xor edx,ebx                     ;  n79与n80作异或运算记为n82”D5C11471“
004AC46E   |.  8B1C8D 485F>|mov ebx,dword ptr ds:[ecx*4+525>;  n81*4+525f48查表得"B5D7D762"记为n83入ebx
004AC475   |.  8B4C24 10   |mov ecx,dword ptr ss:[esp+10]   ;  n40入ecx
004AC479   |.  81E1 FF0000>|and ecx,0FF                     ;  n40与0FF作与运算记为n84
004AC47F   |.  33D3        |xor edx,ebx                     ;  n82与n83作异或运算记为n85"6016C313"
004AC481   |.  894424 10   |mov dword ptr ss:[esp+10],eax   ;  n76入内存地址0012ebf8
004AC485   |.  8B1C8D 486B>|mov ebx,dword ptr ds:[ecx*4+526>;  n84*4+526b48查表得"18182830"记为n86入ebx
004AC48C   |.  8BCF        |mov ecx,edi                     ;  n65入ecx
004AC48E   |.  33D3        |xor edx,ebx                     ;  n85与n86作异或运算记为n87”780EEB23"
004AC490   |.  8B5D D8     |mov ebx,dword ptr ss:[ebp-28]   ;  b1入ebx
004AC493   |.  33D3        |xor edx,ebx                     ;  n87与n86作异或运算记为n88“1B66B46E”
004AC495   |.  4E          |dec esi                         ;  n41减一
004AC496   |.  895424 18   |mov dword ptr ss:[esp+18],edx   ;  n88“1B66B46E"入内存地址0012ec00
004AC49A   |.  894C24 1C   |mov dword ptr ss:[esp+1C],ecx   ;  n65"1F658837"入内存地址0012ec04
004AC49E   |.  897424 64   |mov dword ptr ss:[esp+64],esi   ;  n41入内存地址0012ec4c
004AC4A2   |.^ 0F85 DBFEFF>\jnz 1.004AC383                  ;  没有完则继续。循环14次
004AC4A8   |.  8B7424 20   mov esi,dword ptr ss:[esp+20]       ;  n41入esi
004AC4AC   |.  8B6C24 24   mov ebp,dword ptr ss:[esp+24]
004AC4B0   |>  C1E6 05     shl esi,5                           ;  n41左移5次记为m1
004AC4B3   |.  33D2        xor edx,edx                         ;  清空edx
004AC4B5   |.  8B7C2E 38   mov edi,dword ptr ds:[esi+ebp+38]
----------------------------------------------------------------------------------------
004AC643   |.  64:890D 000>mov dword ptr fs:[0],ecx
004AC64A   |.  83C4 50     add esp,50
004AC64D   \.  C2 0800     retn 8   以上都是移位查表操作 
得”D6A6ECDB19D8CD47AFC0134DA67B39F5“
-----------------------------------------------------------------------------------------
00430EC9   |.  E8 42FEFFFF call 1.00430D10                     ; \1.00430D10  第二步
00430ECE   |.  8D4C24 0C   lea ecx,dword ptr ss:[esp+C]
00430ED2   |.  8D4424 3C   lea eax,dword ptr ss:[esp+3C]

第二步也是以上的计算call。a1为户名+字符串“nover"。
结果得:"8B631E85CC05BFAAF9904D1A5ED93140"

 
00430DD6   |.  FF52 08     call dword ptr ds:[edx+8]           ;  1.004AD380  第三步
00430DD9   |.  8D7C1B 01   lea edi,dword ptr ds:[ebx+ebx+1]
00430DDD   |.  8BC7        mov eax,edi
00430DDF   |.  83C0 03     add eax,3

第三步也是以上的计算call经过两次。a1为注册的Email+字符串“nover"。
结果得:"53A25FA9C297A638BE8B4610C03E88CC2D91F21842793A3A91BA2DBF7F2E0539"

00430EFC   |.  E8 9B920C00 call <jmp.&MFC42.#4129_CString::Left> 从左到右取第三步的两位
00430F01   |.  8BF8        mov edi,eax
00430F03   |.  8D4424 24   lea eax,dword ptr ss:[esp+24]
00430F07   |.  6A 02       push 2
00430F09   |.  50          push eax
00430F0A   |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
00430F0E   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],6
00430F13   |.  E8 84920C00 call <jmp.&MFC42.#4129_CString::Left> 从左到右取第二步的两位
00430F18   |.  8BE8        mov ebp,eax
00430F1A   |.  8D4C24 20   lea ecx,dword ptr ss:[esp+20]
00430F1E   |.  6A 02       push 2
00430F20   |.  51          push ecx
00430F21   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
00430F25   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],7
00430F2A   |.  E8 6D920C00 call <jmp.&MFC42.#4129_CString::Left> 从左到右取第一步的两位
00430F2F   |.  55          push ebp
----------------------------------------------------------------
00430F46   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],9
00430F4B   |.  50          push eax
00430F4C   |.  E8 E5910C00 call <jmp.&MFC42.#922_operator+>  连起来"D68B53"
第四步也是以上的计算call,a1为"D68B53",结果得“9F91F6123A3B244C29CB676A505B3329”

00430FAF   |.  E8 E8910C00 call <jmp.&MFC42.#4129_CString::Left>   (1)
00430FB4   |.  50          push eax
00430FB5   |.  8BCF        mov ecx,edi
00430FB7   |.  C64424 38 0>mov byte ptr ss:[esp+38],0F
(1)从“9F91F6123A3B244C29CB676A505B3329”左取7位“9F91F61”第一组注册码
---------------------------------------------------------------------------------
004455B1    .  51          push ecx                                   ; /s2 = "9F91F61"  真码
004455B2    .  50          push eax                                   ; |s1 = "1111111"  输入的假码
004455B3    .  FF15 EC9051>call dword ptr ds:[<&MSVCRT._mbscmp>]      ; \_mbscmp      比较

004455D2    .  84C0        test al,al
004455D4    .  74 0A       je short 1.004455E0  比较不通过这里就不跳,我这里让她跳。z=1
004455D6    .  E8 49480B00 call <jmp.&MFC42.#4853_CDialog::OnOK>没反应
004455DB    .  E9 20060000 jmp 1.00445C00
-----------------------------------------------------------------------------------
0044563E    .  68 649F5500 push 1.00559F64                            ;  ASCII "nover"
00445643    .  E8 38490B00 call <jmp.&MFC42.#537_CString::CString>
00445648    .  8BCF        mov ecx,edi                                ; |
0044564A    .  C64424 60 0>mov byte ptr ss:[esp+60],5                 ; |
0044564F    .  E8 FCB9FEFF call 1.00431050                            ; \1.00431050


004310B2   |.  E8 4D950C00 call <jmp.&MFC42.#4203_CString::MakeRevers> 把字符"nover"换位
004310B7   |.  8D4C24 40   lea ecx,dword ptr ss:[esp+40]
004310BB   |.  E8 44950C00 call <jmp.&MFC42.#4203_CString::MakeRevers>把注册名换位
004310C0   |.  8D4C24 44   lea ecx,dword ptr ss:[esp+44]
004310C4   |.  E8 3B950C00 call <jmp.&MFC42.#4203_CString::MakeRevers>把注册Email换位

第五步也是以上的计算call,a1为换位后的字符“revon",
结果得”4234CE3C13C0914CF022453D51D882AF“

004310FE   |.  E8 0DFCFFFF call 1.00430D10                            ; \1.00430D10
00431103   |.  8D4424 0C   lea eax,dword ptr ss:[esp+C]
00431107   |.  8D5424 44   lea edx,dword ptr ss:[esp+44]

第六步也是以上的计算call,a1为换位后的注册用户名
结果得”3B83606EAC15FBA5C4879DCB1F65295B"

第七步也是以上的计算call,a1为换位后的注册的Email
结果得“3EE94FA04CB773F06CCC53FF6DCC7F7F”

0043112B   |.  E8 6C900C00 call <jmp.&MFC42.#4129_CString::Left> 左取第七步的两位
00431130   |.  8BF8        mov edi,eax
00431132   |.  8D4C24 24   lea ecx,dword ptr ss:[esp+24]
00431136   |.  6A 02       push 2
00431138   |.  51          push ecx
00431139   |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
0043113D   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],6
00431142   |.  E8 55900C00 call <jmp.&MFC42.#4129_CString::Left>左取第六步的两位
00431147   |.  8BE8        mov ebp,eax
00431149   |.  8D5424 20   lea edx,dword ptr ss:[esp+20]
0043114D   |.  6A 02       push 2
0043114F   |.  52          push edx
00431150   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
00431154   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],7
00431159   |.  E8 3E900C00 call <jmp.&MFC42.#4129_CString::Left>左取第五步的两位
-----------------------------------------------------------------------------------
0043116A   |.  E8 C78F0C00 call <jmp.&MFC42.#922_operator+>  连起来
0043116F   |.  57          push edi
00431170   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
00431174   |.  50          push eax
00431175   |.  51          push ecx
00431176   |.  C64424 40 0>mov byte ptr ss:[esp+40],9
0043117B   |.  E8 B68F0C00 call <jmp.&MFC42.#922_operator+>


004311D0   |.  E8 3BFBFFFF call 1.00430D10                            ; \1.00430D10
004311D5   |.  8D4424 48   lea eax,dword ptr ss:[esp+48]

第八步也是以上的计算call,a1为连起来的字符"423B3E"
结果得“392F62291D9B740975738C332B748AC6”

00445667    .  E8 AE4B0B00 call <jmp.&MFC42.#4278_CString::Mid> (2)
0044566C    .  8B5424 30   mov edx,dword ptr ss:[esp+30]
00445670    .  8B00        mov eax,dword ptr ds:[eax]

(2)左取字符串“392F62291D9B740975738C332B748AC6”的七位“392F622"为第二组注册码

00445672    .  52          push edx                                   ; /s2 = "392F622"  真码
00445673    .  50          push eax                                   ; |s1 = "2222222"  假码
00445674    .  FF15 EC9051>call dword ptr ds:[<&MSVCRT._mbscmp>]      ; \_mbscmp        比较
0044567A    .  83C4 08     add esp,8
0044567D    .  8D4C24 2C   lea ecx,dword ptr ss:[esp+2C]
00445681    .  85C0        test eax,eax
00445683    .  0F954424 13 setne byte ptr ss:[esp+13]
00445688    .  E8 E7480B00 call <jmp.&MFC42.#800_CString::~CString>
0044568D    .  8A4424 13   mov al,byte ptr ss:[esp+13]
00445691    .  8BCE        mov ecx,esi
00445693    .  84C0        test al,al
00445695    .  74 6F       je short 1.00445706        这里我让她跳   z=1
00445697    .  E8 88470B00 call <jmp.&MFC42.#4853_CDialog::OnOK> 没反应

0044574F    .  68 649F5500 push 1.00559F64                            ;  ASCII "nover"
00445754    .  E8 27480B00 call <jmp.&MFC42.#537_CString::CString>
00445759    .  8BCF        mov ecx,edi                                ; |
0044575B    .  C64424 60 0>mov byte ptr ss:[esp+60],5                 ; |
00445760    .  E8 1BBBFEFF call 1.00431280                            ; \1.00431280

第九步重复第一步的计算,得”D6A6ECDB19D8CD47AFC0134DA67B39F5“

第十步也是以上的计算call,a1为注册的用户名的大写。
结果得”297178FA0064B64F91E77F6F992D140E“

第十一步也是以上的计算call,a1为注册的Email的大写
结果得”64E44D025F74192518B9E65AEC1DD4C7“

0043135B   |.  E8 3C8E0C00 call <jmp.&MFC42.#4129_CString::Left>左取第十一步的两位
00431360   |.  8BF8        mov edi,eax
00431362   |.  8D4C24 24   lea ecx,dword ptr ss:[esp+24]
00431366   |.  6A 02       push 2
00431368   |.  51          push ecx
00431369   |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
0043136D   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],6
00431372   |.  E8 258E0C00 call <jmp.&MFC42.#4129_CString::Left>左取第十步的两位
00431377   |.  8BE8        mov ebp,eax
00431379   |.  8D5424 20   lea edx,dword ptr ss:[esp+20]
0043137D   |.  6A 02       push 2
0043137F   |.  52          push edx
00431380   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
00431384   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],7
00431389   |.  E8 0E8E0C00 call <jmp.&MFC42.#4129_CString::Left>左取第九步的两位


0043139A   |.  E8 978D0C00 call <jmp.&MFC42.#922_operator+>
0043139F   |.  57          push edi
004313A0   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
004313A4   |.  50          push eax
004313A5   |.  51          push ecx
004313A6   |.  C64424 40 0>mov byte ptr ss:[esp+40],9
004313AB   |.  E8 868D0C00 call <jmp.&MFC42.#922_operator+>   连起来


00431400   |.  E8 0BF9FFFF call 1.00430D10                            ; \1.00430D10
00431405   |.  8D4424 48   lea eax,dword ptr ss:[esp+48]

第十二步也是以上的计算call,a1为连起来的字符"D62964"
结果得“3F943C4337ED46F167F6DEDEA82D9D0B”

00445778    .  E8 9D4A0B00 call <jmp.&MFC42.#4278_CString::Mid> (3)
0044577D    .  8B4C24 30   mov ecx,dword ptr ss:[esp+30]
00445781    .  8B00        mov eax,dword ptr ds:[eax]
(3)左取第十二步的“3F943C4337ED46F167F6DEDEA82D9D0B”七位“3F943C4”
00445783    .  51          push ecx                                   ; /s2 = "3F943C4"  真码
00445784    .  50          push eax                                   ; |s1 = "3333333"  假码
00445785    .  FF15 EC9051>call dword ptr ds:[<&MSVCRT._mbscmp>]      ; \_mbscmp        比较
0044578B    .  83C4 08     add esp,8
0044578E    .  8D4C24 2C   lea ecx,dword ptr ss:[esp+2C]
00445792    .  85C0        test eax,eax
00445794    .  0F954424 13 setne byte ptr ss:[esp+13]
00445799    .  E8 D6470B00 call <jmp.&MFC42.#800_CString::~CString>
0044579E    .  8A4424 13   mov al,byte ptr ss:[esp+13]
004457A2    .  8BCE        mov ecx,esi
004457A4    .  84C0        test al,al
004457A6    .  74 6F       je short 1.00445817    这里我让她跳      z=1
004457A8    .  E8 77460B00 call <jmp.&MFC42.#4853_CDialog::OnOK>
----------------------------------------------------------------------------------------
00445859    .  68 649F5500 push 1.00559F64                            ;  ASCII "nover"
0044585E    .  E8 1D470B00 call <jmp.&MFC42.#537_CString::CString>
00445863    .  8BCF        mov ecx,edi                                ; |
00445865    .  C64424 60 0>mov byte ptr ss:[esp+60],5                 ; |
0044586A    .  E8 41BCFEFF call 1.004314B0                            ; \1.004314B0

第十三步重复第一步的计算,得”D6A6ECDB19D8CD47AFC0134DA67B39F5“

第十四步也是以上的计算call,a1为注册的用户名+这个软件的主页“www.crob.net"
结果得”1EB959796972DEB2BDA60700CABCBF37“

第十五步也是经上的计算call,a1为注册的Email
结果得”4F21187873592D0C9C4DF884A40336E1“

00431576   |.  E8 218C0C00 call <jmp.&MFC42.#4129_CString::Left> 左取第十五步的两位
0043157B   |.  8BF8        mov edi,eax
0043157D   |.  8D4C24 24   lea ecx,dword ptr ss:[esp+24]
00431581   |.  6A 02       push 2
00431583   |.  51          push ecx
00431584   |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
00431588   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],6
0043158D   |.  E8 0A8C0C00 call <jmp.&MFC42.#4129_CString::Left>  左取第十四步的两位
00431592   |.  8BE8        mov ebp,eax
00431594   |.  8D5424 20   lea edx,dword ptr ss:[esp+20]
00431598   |.  6A 02       push 2
0043159A   |.  52          push edx
0043159B   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
0043159F   |.  C64424 3C 0>mov byte ptr ss:[esp+3C],7
004315A4   |.  E8 F38B0C00 call <jmp.&MFC42.#4129_CString::Left>左取第十三步的两位

004315B5   |.  E8 7C8B0C00 call <jmp.&MFC42.#922_operator+>
004315BA   |.  57          push edi
004315BB   |.  8D4C24 1C   lea ecx,dword ptr ss:[esp+1C]
004315BF   |.  50          push eax
004315C0   |.  51          push ecx
004315C1   |.  C64424 40 0>mov byte ptr ss:[esp+40],9
004315C6   |.  E8 6B8B0C00 call <jmp.&MFC42.#922_operator+>  连起来

第十六步也是以上的计算call,a1为连起来的字符"D61E4F"
结果得“4666A01E1E4C445A68287B0A90E1578A"

0044587C    .  E8 15490B00 call <jmp.&MFC42.#5710_CString::Right>   (4)
00445881    .  8B00        mov eax,dword ptr ds:[eax]
00445883    .  57          push edi                                   ; /s2 = "4666A01"
00445884    .  50          push eax                                   ; |s1 = "4444444"
00445885    .  FF15 EC9051>call dword ptr ds:[<&MSVCRT._mbscmp>]      ; \_mbscmp  比较
0044588B    .  83C4 08     add esp,8
0044588E    .  8D4C24 30   lea ecx,dword ptr ss:[esp+30]
00445892    .  85C0        test eax,eax
00445894    .  0F954424 13 setne byte ptr ss:[esp+13]
00445899    .  E8 D6460B00 call <jmp.&MFC42.#800_CString::~CString>
0044589E    .  8A4424 13   mov al,byte ptr ss:[esp+13]
004458A2    .  8BCE        mov ecx,esi
004458A4    .  84C0        test al,al
004458A6    .  74 6F       je short 1.00445917    这里这让她跳 z=1
004458A8    .  E8 77450B00 call <jmp.&MFC42.#4853_CDialog::OnOK>

(4)取第十六步的结果的七位”"4666A01",为最后一组注册码。

到这里己经完成了所有的计算过程,把正确的注册信息写入文件中。但是她还会重复一次以上所有的步聚。呵呵,真变态啊。
把00578048处一直置0则为未注册版反之嘿嘿。
=====================================================================
这个软件的数据库还要另外注册,晕。只好在跟了下。
注册算法CALL还是以上的注册算法CALL。第一步A1为“nover",b1为“745F6863”,B2为“745E2424”,B3为“46534466”,B4为“59544447”。
得结果为“DFECF5F8BB082BC4EA49C08170503F87”。
第二步:还是以上的注册算法CALL。A1为注册用户名+“nover",
得结果“29580E2BF8383152B09F6223A1D3887B”
第三步:还是以上的注册算法CALL。A1为注册的EMAIL+“nover",
如果字节超过16位,则取前16位计算完后再取俐下的字节继续。
得结果为“8A5758373B47216428BD0B8B BD2CC31B6D59DD97CB8859B0521594C37659C465”。
以下的步骤和上面都差不多。

用户名:落魄浪子,注册Email:Pediy_Crack@21cn.net
注册码:2ED3601-8E5CF6E-111E8F8-1C9B4A0

--------------------------------------------------------------------------------
【破解总结】
注册算法实在长,但却简单。注册机会了吧,内存注册也可。呵呵,写的不好,错误之处敬请指教。
给出一组注册码:用户名:落魄浪子,注册Email:Pediy_Crack@21cn.net
注册码:57D0BF5-0C687AF-EF123D1-CE92408
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

  • 标 题: 答复
  • 作 者:cnbragon
  • 时 间:2005-09-18 14:24

那上面一大段是AES