160 - 7 aLoNg3x.2
環境:
Windows Xp sp3
打開程序,看了幫助發現要求還是看到那個logo,
但是這次少了個按鈕,真棒!
但是這次的Codice卻是什么都可以輸入進去了。
查一下殼發現還是Delphi程序。
因為還是Delphi的程序,有了前幾次的經驗,一下來到這里:
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這個東西,所以這次首先從這里跟進去:
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 ; 下面是一個跳。這里跟進去,這個跟上次的長得差不多嘛 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 !!!",這個東西很刺眼啊 00442BEB |. E8 600CFCFF call aLoNg3x_.00403850 ; 這個是消息框 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 ; 下面的內容是那個“LAMER”出來的原因 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 ; 看這里就是那個“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]跟進去之后發現,就是一個比較,將輸入的Nome和Codice比較,相同就彈框。
彈完框就沒有然后了。
來到這個RegistrezClick,這個注冊按鈕是不是真的呢?
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轉為16進制和判斷輸入的Codice是不是數字 00442F5E |. 8BF0 mov esi,eax ; 將算出的16進制保存到esi 00442F60 |. 837D FC 00 cmp [local.1],0x0 ; 如果不是數字就繼續往下 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 ; 這里計算出下面那個eax的值 00442F86 |. A3 30584400 mov dword ptr ds:[0x445830],eax ; 這里有個賦值給[445830]的,eax值從上面來 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 ; 如果不是數字的話執行到這里就跳走,那么上面賦值一定要在不是數字這個情況下發生 00442F9D |> 85F6 test esi,esi ; 如果Codice是數字就來到這里,看看計算結果,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 ; 這里要跟進去 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]跟了進去:
由上面計算的過程得到:
設:
Nome輸入的內容為字符串數組Name
Name的長度是L
k1是一開始[local.1]的值,也就是edx的值。
k2是計算結果,有:
k2 = 0
x[i] =?Name[i]*Name[t]*[445830] ?t的取值范圍是[0,L-1]
k2 += x[i] ?i的取值范圍是[0,L-1]
(這里是二重循環)
k2 %= 0xA2C2A
k1 = (k1/0x59)+(k1%0x50)+1
最后比較k2和k1是否相同。
至于[445830]的值是從哪里來?上面有講。跟進去看看是怎么來的[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 ; 計算個數 00442AB4 |. 83F8 05 cmp eax,0x5 ; Codice要大于5個字符 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 ; 設置循環次數 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 ; 通過上面部分算出一個值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]的值是怎么算出來的。
由于輸入的Codice不是數字才能使的[445830]的值不為0,然后就可以計算出上面的k1的值應為多少了
根據上面內容很容易就得到:
設:
Nome輸入的內容為:ABCDEF
Codice輸入的內容為:ABCDEF
按Registerz,彈出個錯誤窗口。點確定,因為彈出了這個窗口,才能使得[445830]的值不為0,這個值是通過
Codice的內容算出來的。點走錯誤窗口后,Codice青0,根據上面的計算過程,可以通過Nome的內容
得出k2的值,然后窮舉,找到1個符合要求的k1,這個k1不唯一。
k1:1696639
將k1輸入到Codice里面,然后點Registerz,界面發生了變化,again按鈕出來了,Registerz窗口就不見了。
跟到AgainClick事件的話發現內容是和Registerz的內容差不多的。
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轉為16進制 004430F0 |. 8BF0 mov esi,eax ; eax是輸入Codies的16進制 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 ; 還是有這個函數 00443118 |. A3 30584400 mov dword ptr ds:[0x445830],eax ; 還是賦值到這里來 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 ; 測試是不是小于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 ; 這里計算的函數和Registerz的是一樣的 00443157 |. 84C0 test al,al 00443159 |. 74 73 je XaLoNg3x_.004431CE唯一不同的就是Nome的內容不能改變了,而且[445830]的值又重新變回0,有了上一步的經驗,可以重復上面的步驟。
Codice:ABCDEF
然后還是會告訴你要輸入數字,然后還是這個:
Codice:1696639
這個就是上面的k1,因為調用的函數還是一樣的。
輸入完后點Again,整張logo就出現了,而且標題欄也變成了:Cracked by ABCDEF
總結
以上是生活随笔為你收集整理的160 - 7 aLoNg3x.2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火王之破晓之战剧情介绍
- 下一篇: 信阳看子宫纵隔最好的医院推荐