160 - 7 aLoNg3x.2
環(huán)境:
Windows Xp sp3
打開(kāi)程序,看了幫助發(fā)現(xiàn)要求還是看到那個(gè)logo,
但是這次少了個(gè)按鈕,真棒!
但是這次的Codice卻是什么都可以輸入進(jìn)去了。
查一下殼發(fā)現(xiàn)還是Delphi程序。
因?yàn)檫€是Delphi的程序,有了前幾次的經(jīng)驗(yàn),一下來(lái)到這里:
0044290F . /982B4400 dd aLoNg3x_.00442B98 00442913 . |0D db 0D 00442914 . |43 61 6E 63 6>ascii "CancellaClick" 00442921 |11 db 11 00442922 |00 db 00 00442923 . |C82C4400 dd aLoNg3x_.00442CC8 00442927 . |0A db 0A 00442928 . |41 62 6F 75 7>ascii "AboutClick" 00442932 |15 db 15 00442933 |00 db 00 00442934 . |282F4400 dd aLoNg3x_.00442F28 00442938 . |0E db 0E 00442939 . |52 65 67 69 7>ascii "RegisterzClick" 00442947 |11 db 11 00442948 |00 db 00 00442949 . |BC304400 dd aLoNg3x_.004430BC 0044294D . |0A db 0A 0044294E . |41 67 61 69 6>ascii "AgainClick"
上次首先按的是Cancella這個(gè)東西,所以這次首先從這里跟進(jìn)去:
00442B98 /. 55 push ebp 00442B99 |. 8BEC mov ebp,esp 00442B9B |. 6A 00 push 0x0 00442B9D |. 6A 00 push 0x0 00442B9F |. 6A 00 push 0x0 00442BA1 |. 53 push ebx 00442BA2 |. 8BD8 mov ebx,eax 00442BA4 |. 33C0 xor eax,eax 00442BA6 |. 55 push ebp 00442BA7 |. 68 9C2C4400 push aLoNg3x_.00442C9C 00442BAC |. 64:FF30 push dword ptr fs:[eax] 00442BAF |. 64:8920 mov dword ptr fs:[eax],esp 00442BB2 |. 8D55 F8 lea edx,[local.2] 00442BB5 |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 00442BBB |. E8 8006FEFF call aLoNg3x_.00423240 ; 將Codice讀到[local.2] 00442BC0 |. 8B45 F8 mov eax,[local.2] 00442BC3 |. 50 push eax 00442BC4 |. 8D55 F4 lea edx,[local.3] 00442BC7 |. 8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8] 00442BCD |. E8 6E06FEFF call aLoNg3x_.00423240 ; 將Nome讀到local.3 00442BD2 |. 8B45 F4 mov eax,[local.3] 00442BD5 |. 5A pop edx 00442BD6 |. E8 55FFFFFF call aLoNg3x_.00442B30 ; 下面是一個(gè)跳。這里跟進(jìn)去,這個(gè)跟上次的長(zhǎng)得差不多嘛 00442BDB |. 84C0 test al,al 00442BDD |. 0F84 86000000 je aLoNg3x_.00442C69 00442BE3 |. 8D45 FC lea eax,[local.1] 00442BE6 |. BA B02C4400 mov edx,aLoNg3x_.00442CB0 ; ASCII "GREAT !!!",這個(gè)東西很刺眼啊 00442BEB |. E8 600CFCFF call aLoNg3x_.00403850 ; 這個(gè)是消息框 00442BF0 |. 8B45 FC mov eax,[local.1] 00442BF3 |. E8 78F9FFFF call aLoNg3x_.00442570 00442BF8 |. 8D45 FC lea eax,[local.1] 00442BFB |. E8 0410FCFF call aLoNg3x_.00403C04 ; 下面的內(nèi)容是那個(gè)“LAMER”出來(lái)的原因 00442C00 |. 8B55 FC mov edx,[local.1] 00442C03 |. 0FB612 movzx edx,byte ptr ds:[edx] 00442C06 |. 83C2 05 add edx,0x5 00442C09 |. 8810 mov byte ptr ds:[eax],dl 00442C0B |. 8D45 FC lea eax,[local.1] 00442C0E |. E8 F10FFCFF call aLoNg3x_.00403C04 00442C13 |. 8B55 FC mov edx,[local.1] 00442C16 |. 0FB652 01 movzx edx,byte ptr ds:[edx+0x1] 00442C1A |. 83EA 11 sub edx,0x11 00442C1D |. 8850 01 mov byte ptr ds:[eax+0x1],dl 00442C20 |. 8D45 FC lea eax,[local.1] 00442C23 |. E8 DC0FFCFF call aLoNg3x_.00403C04 00442C28 |. 8B55 FC mov edx,[local.1] 00442C2B |. 0FB652 02 movzx edx,byte ptr ds:[edx+0x2] 00442C2F |. 83C2 08 add edx,0x8 00442C32 |. 8850 02 mov byte ptr ds:[eax+0x2],dl 00442C35 |. 8D45 FC lea eax,[local.1] 00442C38 |. E8 C70FFCFF call aLoNg3x_.00403C04 00442C3D |. 8B55 FC mov edx,[local.1] 00442C40 |. 0FB652 03 movzx edx,byte ptr ds:[edx+0x3] 00442C44 |. 83C2 04 add edx,0x4 00442C47 |. 8850 03 mov byte ptr ds:[eax+0x3],dl 00442C4A |. 8D45 FC lea eax,[local.1] 00442C4D |. E8 B20FFCFF call aLoNg3x_.00403C04 00442C52 |. 8B55 FC mov edx,[local.1] 00442C55 |. 0FB652 04 movzx edx,byte ptr ds:[edx+0x4] 00442C59 |. 83EA 02 sub edx,0x2 00442C5C |. 8850 04 mov byte ptr ds:[eax+0x4],dl 00442C5F |. 8B45 FC mov eax,[local.1] 00442C62 |. E8 09F9FFFF call aLoNg3x_.00442570 ; 看這里就是那個(gè)“LAMER”彈出消息框的地方了 00442C67 |. EB 10 jmp XaLoNg3x_.00442C79 00442C69 |> BA C42C4400 mov edx,aLoNg3x_.00442CC4 00442C6E |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 00442C74 |. E8 F705FEFF call aLoNg3x_.00423270 00442C79 |> 33C0 xor eax,eax 00442C7B |. 5A pop edx 00442C7C |. 59 pop ecx 00442C7D |. 59 pop ecx 00442C7E |. 64:8910 mov dword ptr fs:[eax],edx 00442C81 |. 68 A32C4400 push aLoNg3x_.00442CA3 00442C86 |> 8D45 F4 lea eax,[local.3] 00442C89 |. BA 02000000 mov edx,0x2 00442C8E |. E8 490BFCFF call aLoNg3x_.004037DC 00442C93 |. 8D45 FC lea eax,[local.1] 00442C96 |. E8 1D0BFCFF call aLoNg3x_.004037B8 00442C9B \. C3 retn在[00442B30]跟進(jìn)去之后發(fā)現(xiàn),就是一個(gè)比較,將輸入的Nome和Codice比較,相同就彈框。
彈完框就沒(méi)有然后了。
來(lái)到這個(gè)RegistrezClick,這個(gè)注冊(cè)按鈕是不是真的呢?
00442F28 /. 55 push ebp 00442F29 |. 8BEC mov ebp,esp 00442F2B |. 83C4 F8 add esp,-0x8 00442F2E |. 53 push ebx 00442F2F |. 56 push esi 00442F30 |. 33C9 xor ecx,ecx 00442F32 |. 894D F8 mov [local.2],ecx 00442F35 |. 8BD8 mov ebx,eax 00442F37 |. 33C0 xor eax,eax 00442F39 |. 55 push ebp 00442F3A |. 68 22304400 push aLoNg3x_.00443022 00442F3F |. 64:FF30 push dword ptr fs:[eax] 00442F42 |. 64:8920 mov dword ptr fs:[eax],esp 00442F45 |. 8D55 F8 lea edx,[local.2] 00442F48 |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 00442F4E |. E8 ED02FEFF call aLoNg3x_.00423240 ; 將Codice給到Local.2 00442F53 |. 8B45 F8 mov eax,[local.2] 00442F56 |. 8D55 FC lea edx,[local.1] 00442F59 |. E8 FAF9FBFF call aLoNg3x_.00402958 ; 這里將輸入的Codice轉(zhuǎn)為16進(jìn)制和判斷輸入的Codice是不是數(shù)字 00442F5E |. 8BF0 mov esi,eax ; 將算出的16進(jìn)制保存到esi 00442F60 |. 837D FC 00 cmp [local.1],0x0 ; 如果不是數(shù)字就繼續(xù)往下 00442F64 |. 74 37 je XaLoNg3x_.00442F9D 00442F66 |. B8 38304400 mov eax,aLoNg3x_.00443038 ; ASCII "You MUST insert a valid Long Integer Value in the Code Editor... Thank you :)" 00442F6B |. E8 00F6FFFF call aLoNg3x_.00442570 00442F70 |. 8D55 F8 lea edx,[local.2] 00442F73 |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 00442F79 |. E8 C202FEFF call aLoNg3x_.00423240 00442F7E |. 8B45 F8 mov eax,[local.2] 00442F81 |. E8 06FBFFFF call aLoNg3x_.00442A8C ; 這里計(jì)算出下面那個(gè)eax的值 00442F86 |. A3 30584400 mov dword ptr ds:[0x445830],eax ; 這里有個(gè)賦值給[445830]的,eax值從上面來(lái) 00442F8B |. BA 90304400 mov edx,aLoNg3x_.00443090 00442F90 |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 00442F96 |. E8 D502FEFF call aLoNg3x_.00423270 00442F9B |. EB 6F jmp XaLoNg3x_.0044300C ; 如果不是數(shù)字的話執(zhí)行到這里就跳走,那么上面賦值一定要在不是數(shù)字這個(gè)情況下發(fā)生 00442F9D |> 85F6 test esi,esi ; 如果Codice是數(shù)字就來(lái)到這里,看看計(jì)算結(jié)果,esi小于0就跳 00442F9F |. 7E 5A jle XaLoNg3x_.00442FFB 00442FA1 |. 8D55 F8 lea edx,[local.2] 00442FA4 |. 8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8] 00442FAA |. E8 9102FEFF call aLoNg3x_.00423240 ; 00442FAF |. 8B4D F8 mov ecx,[local.2] 00442FB2 |. 8BD6 mov edx,esi 00442FB4 |. A1 30584400 mov eax,dword ptr ds:[0x445830] ; 這里要從[445830]取值了 00442FB9 |. E8 EAF9FFFF call aLoNg3x_.004429A8 ; 這里要跟進(jìn)去 00442FBE |. 84C0 test al,al 00442FC0 |. 74 30 je XaLoNg3x_.00442FF2 00442FC2 |. 33D2 xor edx,edx 00442FC4 |. 8B83 CC020000 mov eax,dword ptr ds:[ebx+0x2CC] 00442FCA |. E8 6101FEFF call aLoNg3x_.00423130 00442FCF |. B2 01 mov dl,0x1 00442FD1 |. 8B83 E8020000 mov eax,dword ptr ds:[ebx+0x2E8] 00442FD7 |. E8 5401FEFF call aLoNg3x_.00423130 00442FDC |. 33D2 xor edx,edx 00442FDE |. 8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8] 00442FE4 |. 8B08 mov ecx,dword ptr ds:[eax] 00442FE6 |. FF51 60 call dword ptr ds:[ecx+0x60] 00442FE9 |. 33C0 xor eax,eax 00442FEB |. A3 30584400 mov dword ptr ds:[0x445830],eax 00442FF0 |. EB 1A jmp XaLoNg3x_.0044300C 00442FF2 |> 33C0 xor eax,eax 00442FF4 |. A3 30584400 mov dword ptr ds:[0x445830],eax 00442FF9 |. EB 11 jmp XaLoNg3x_.0044300C 00442FFB |> B8 9C304400 mov eax,aLoNg3x_.0044309C ; ASCII "Please... The Code Must be > 0" 00443000 |. E8 6BF5FFFF call aLoNg3x_.00442570 00443005 |. 33C0 xor eax,eax 00443007 |. A3 30584400 mov dword ptr ds:[0x445830],eax 0044300C |> 33C0 xor eax,eax 0044300E |. 5A pop edx 0044300F |. 59 pop ecx 00443010 |. 59 pop ecx 00443011 |. 64:8910 mov dword ptr fs:[eax],edx 00443014 |. 68 29304400 push aLoNg3x_.00443029 00443019 |> 8D45 F8 lea eax,[local.2] 0044301C |. E8 9707FCFF call aLoNg3x_.004037B8 00443021 \. C3 retn在[004429A8]跟了進(jìn)去:
由上面計(jì)算的過(guò)程得到:
設(shè):
Nome輸入的內(nèi)容為字符串?dāng)?shù)組Name
Name的長(zhǎng)度是L
k1是一開(kāi)始[local.1]的值,也就是edx的值。
k2是計(jì)算結(jié)果,有:
k2 = 0
x[i] =?Name[i]*Name[t]*[445830] ?t的取值范圍是[0,L-1]
k2 += x[i] ?i的取值范圍是[0,L-1]
(這里是二重循環(huán))
k2 %= 0xA2C2A
k1 = (k1/0x59)+(k1%0x50)+1
最后比較k2和k1是否相同。
至于[445830]的值是從哪里來(lái)?上面有講。跟進(jìn)去看看是怎么來(lái)的[00442A8C]:
00442A8C /$ 55 push ebp 00442A8D |. 8BEC mov ebp,esp 00442A8F |. 51 push ecx 00442A90 |. 53 push ebx 00442A91 |. 56 push esi 00442A92 |. 57 push edi 00442A93 |. 8945 FC mov [local.1],eax 00442A96 |. 8B45 FC mov eax,[local.1] 00442A99 |. E8 4A11FCFF call aLoNg3x_.00403BE8 00442A9E |. 33C0 xor eax,eax 00442AA0 |. 55 push ebp 00442AA1 |. 68 212B4400 push aLoNg3x_.00442B21 00442AA6 |. 64:FF30 push dword ptr fs:[eax] 00442AA9 |. 64:8920 mov dword ptr fs:[eax],esp 00442AAC |. 8B45 FC mov eax,[local.1] 00442AAF |. E8 800FFCFF call aLoNg3x_.00403A34 ; 計(jì)算個(gè)數(shù) 00442AB4 |. 83F8 05 cmp eax,0x5 ; Codice要大于5個(gè)字符 00442AB7 |. 7E 3D jle XaLoNg3x_.00442AF6 00442AB9 |. BE 7B030000 mov esi,0x37B 00442ABE |. 8B45 FC mov eax,[local.1] 00442AC1 |. E8 6E0FFCFF call aLoNg3x_.00403A34 00442AC6 |. 8BD8 mov ebx,eax 00442AC8 |. 4B dec ebx ; 設(shè)置循環(huán)次數(shù) 00442AC9 |. 85DB test ebx,ebx 00442ACB |. 7E 2B jle XaLoNg3x_.00442AF8 00442ACD |. B9 01000000 mov ecx,0x1 00442AD2 |> 8B45 FC /mov eax,[local.1] 00442AD5 |. 0FB60408 |movzx eax,byte ptr ds:[eax+ecx] 00442AD9 |. BF 11000000 |mov edi,0x11 00442ADE |. 33D2 |xor edx,edx 00442AE0 |. F7F7 |div edi 00442AE2 |. 42 |inc edx 00442AE3 |. 8B45 FC |mov eax,[local.1] 00442AE6 |. 0FB64408 FF |movzx eax,byte ptr ds:[eax+ecx-0x1] 00442AEB |. 0FAFD0 |imul edx,eax 00442AEE |. 03F2 |add esi,edx 00442AF0 |. 41 |inc ecx 00442AF1 |. 4B |dec ebx 00442AF2 |.^ 75 DE \jnz XaLoNg3x_.00442AD2 ; 通過(guò)上面部分算出一個(gè)值X 00442AF4 |. EB 02 jmp XaLoNg3x_.00442AF8 00442AF6 |> 33F6 xor esi,esi 00442AF8 |> 8BC6 mov eax,esi 00442AFA |. B9 48710000 mov ecx,0x7148 ; 00442AFF |. 99 cdq 00442B00 |. F7F9 idiv ecx 00442B02 |. 8BC2 mov eax,edx ; eax = x % 0x7148 00442B04 |. 99 cdq ; 使得edx清0 00442B05 |. 33C2 xor eax,edx ; eax不變 00442B07 |. 2BC2 sub eax,edx ; eax還是不變 00442B09 |. 8BD8 mov ebx,eax 00442B0B |. 33C0 xor eax,eax這樣就得到了[445830]的值是怎么算出來(lái)的。
由于輸入的Codice不是數(shù)字才能使的[445830]的值不為0,然后就可以計(jì)算出上面的k1的值應(yīng)為多少了
根據(jù)上面內(nèi)容很容易就得到:
設(shè):
Nome輸入的內(nèi)容為:ABCDEF
Codice輸入的內(nèi)容為:ABCDEF
按Registerz,彈出個(gè)錯(cuò)誤窗口。點(diǎn)確定,因?yàn)閺棾隽诉@個(gè)窗口,才能使得[445830]的值不為0,這個(gè)值是通過(guò)
Codice的內(nèi)容算出來(lái)的。點(diǎn)走錯(cuò)誤窗口后,Codice青0,根據(jù)上面的計(jì)算過(guò)程,可以通過(guò)Nome的內(nèi)容
得出k2的值,然后窮舉,找到1個(gè)符合要求的k1,這個(gè)k1不唯一。
k1:1696639
將k1輸入到Codice里面,然后點(diǎn)Registerz,界面發(fā)生了變化,again按鈕出來(lái)了,Registerz窗口就不見(jiàn)了。
跟到AgainClick事件的話發(fā)現(xiàn)內(nèi)容是和Registerz的內(nèi)容差不多的。
004430BC /. 55 push ebp 004430BD |. 8BEC mov ebp,esp 004430BF |. 6A 00 push 0x0 004430C1 |. 6A 00 push 0x0 004430C3 |. 6A 00 push 0x0 004430C5 |. 53 push ebx 004430C6 |. 56 push esi 004430C7 |. 8BD8 mov ebx,eax 004430C9 |. 33C0 xor eax,eax 004430CB |. 55 push ebp 004430CC |. 68 2D324400 push aLoNg3x_.0044322D 004430D1 |. 64:FF30 push dword ptr fs:[eax] 004430D4 |. 64:8920 mov dword ptr fs:[eax],esp 004430D7 |. 8D55 F4 lea edx,[local.3] 004430DA |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 004430E0 |. E8 5B01FEFF call aLoNg3x_.00423240 ; 將Codiece讀到local.3 004430E5 |. 8B45 F4 mov eax,[local.3] 004430E8 |. 8D55 FC lea edx,[local.1] 004430EB |. E8 68F8FBFF call aLoNg3x_.00402958 ; 用于將Codice轉(zhuǎn)為16進(jìn)制 004430F0 |. 8BF0 mov esi,eax ; eax是輸入Codies的16進(jìn)制 004430F2 |. 837D FC 00 cmp [local.1],0x0 004430F6 |. 74 3A je XaLoNg3x_.00443132 004430F8 |. B8 44324400 mov eax,aLoNg3x_.00443244 ; ASCII "You MUST insert a valid Long Integer Value in the Code Editor... Thank you :)" 004430FD |. E8 6EF4FFFF call aLoNg3x_.00442570 00443102 |. 8D55 F4 lea edx,[local.3] 00443105 |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 0044310B |. E8 3001FEFF call aLoNg3x_.00423240 00443110 |. 8B45 F4 mov eax,[local.3] 00443113 |. E8 74F9FFFF call aLoNg3x_.00442A8C ; 還是有這個(gè)函數(shù) 00443118 |. A3 30584400 mov dword ptr ds:[0x445830],eax ; 還是賦值到這里來(lái) 0044311D |. BA 9C324400 mov edx,aLoNg3x_.0044329C 00443122 |. 8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC] 00443128 |. E8 4301FEFF call aLoNg3x_.00423270 0044312D |. E9 DD000000 jmp aLoNg3x_.0044320F 00443132 |> 85F6 test esi,esi ; 測(cè)試是不是小于0 00443134 |. 0F8E C4000000 jle aLoNg3x_.004431FE 0044313A |. 8D55 F4 lea edx,[local.3] 0044313D |. 8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8] 00443143 |. E8 F800FEFF call aLoNg3x_.00423240 ; 將Nome讀到local.3 00443148 |. 8B4D F4 mov ecx,[local.3] 0044314B |. 8BD6 mov edx,esi 0044314D |. A1 30584400 mov eax,dword ptr ds:[0x445830] 00443152 |. E8 51F8FFFF call aLoNg3x_.004429A8 ; 這里計(jì)算的函數(shù)和Registerz的是一樣的 00443157 |. 84C0 test al,al 00443159 |. 74 73 je XaLoNg3x_.004431CE唯一不同的就是Nome的內(nèi)容不能改變了,而且[445830]的值又重新變回0,有了上一步的經(jīng)驗(yàn),可以重復(fù)上面的步驟。
Codice:ABCDEF
然后還是會(huì)告訴你要輸入數(shù)字,然后還是這個(gè):
Codice:1696639
這個(gè)就是上面的k1,因?yàn)檎{(diào)用的函數(shù)還是一樣的。
輸入完后點(diǎn)Again,整張logo就出現(xiàn)了,而且標(biāo)題欄也變成了:Cracked by ABCDEF
總結(jié)
以上是生活随笔為你收集整理的160 - 7 aLoNg3x.2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 火王之破晓之战剧情介绍
- 下一篇: 160 - 8 Andrnalin.1