環境:
Windows xp sp3
打開,這次的界面炫酷多了,就像輸保險箱密碼。
旁邊一個“UNREGISTRIERT”表示還沒注冊
輸入個666666,沒反應又沒有確認按鈕,可以猜測是用timer來檢測輸入的正確性
查殼,無殼的VB程序
OD載入,繼續是查字符串:
00404A6B mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747D7AFF7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C"
00404AA3 push Andréna.00401EBC UNICODE "REGISTRIERT"
00404C88 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747D7A7D7C7F82836D74747A7F7E7G7C7D826D817E7B7C"
00404CC0 push Andréna.00401EBC UNICODE "REGISTRIERT"
00404EA5 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "Q817E747D7AFF7C7F82836D74RR7A7F7E7B7C7D826D81KEZB7C"
00404EDD push Andréna.00401EBC UNICODE "REGISTRIERT"
004050C2 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747D7AFP7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C"
004050FA push Andréna.00401EBC UNICODE "REGISTRIERT"
004052DF mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747G7AFF7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C"
00405317 push Andréna.00401EBC UNICODE "REGISTRIERT"
004054FC mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747D"
00405534 push Andréna.00401EBC UNICODE "REGISTRIERT"
00405719 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E7WOD7AFF7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C"
00405751 push Andréna.00401EBC UNICODE "REGISTRIERT"
00405936 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "http://beam.to/cugABCDEFGHIJKLMNOPQRSTUVWXYZ1234567"
0040596E push Andréna.00401EBC UNICODE "REGISTRIERT"
00405B53 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747D7AFF7C7F82836D74RR7A7F7E7B7C7D826D8KKE7B7C"
00405B8B push Andréna.00401EBC UNICODE "REGISTRIERT"
00405D70 mov dword ptr ss:[ebp-0xAC],Andréna.004 UNICODE "0817E747$7AFF7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C"
00405DA8 push Andréna.00401EBC UNICODE "REGISTRIERT"
省略下面內容...
這么多個注冊,隨便跟一個進去:
00404C7D ? > \8D45 CC ? ? ? lea eax,dword ptr ss:[ebp-0x34]
00404C80 ? . ?8D8D 4CFFFFFF lea ecx,dword ptr ss:[ebp-0xB4]
00404C86 ? . ?50 ? ? ? ? ? ?push eax ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; /var18
00404C87 ? . ?51 ? ? ? ? ? ?push ecx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |var28
00404C88 ? . ?C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],Andréna.0040>; |UNICODE "0817E747D7A7D7C7F82836D74747A7F7E7G7C7D826D817E7B7C"
00404C92 ? . ?C785 4CFFFFFF>mov dword ptr ss:[ebp-0xB4],0x8008 ? ? ? ; |
00404C9C ? . ?FF15 5C104000 call dword ptr ds:[<&MSVBVM60.__vbaVarTs>; \__vbaVarTstEq
00404CA2 ? . ?66:85C0 ? ? ? test ax,ax ; 這個很樣子很熟悉吧
00404CA5 ? . ?74 4C ? ? ? ? je XAndréna.00404CF3
00404CA7 ? . ?8B45 08 ? ? ? mov eax,dword ptr ss:[ebp+0x8]
00404CAA ? . ?50 ? ? ? ? ? ?push eax
00404CAB ? . ?8B10 ? ? ? ? ?mov edx,dword ptr ds:[eax]
00404CAD ? . ?FF92 38030000 call dword ptr ds:[edx+0x338]
00404CB3 ? . ?50 ? ? ? ? ? ?push eax
00404CB4 ? . ?8D45 AC ? ? ? lea eax,dword ptr ss:[ebp-0x54]
00404CB7 ? . ?50 ? ? ? ? ? ?push eax
00404CB8 ? . ?FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaObjSe>; ?MSVBVM60.__vbaObjSet
00404CBE ? . ?8B08 ? ? ? ? ?mov ecx,dword ptr ds:[eax]
00404CC0 ? . ?68 BC1E4000 ? push Andréna.00401EBC ? ? ? ? ? ? ? ? ? ?; ?UNICODE "REGISTRIERT"
又是通過輸入的內容來計算一個值,然后和那一大串字符進行比較。
關鍵這個值是怎么來的,這次不能“goodname”了,那就“123456789”,在[ebp-2c]就可以看到你輸入的內容計算出來的值了。
居然是“032333435363738393A”,居然只是轉成16進制然后在前加個0而已。這樣的話搞不到一個“81”出來啊,試一下
“987654321”,結果還是一樣。那就應該和那兩個“*”“#”有關了。換成“1#23456789”和“1*23456789”還是沒有“81”出來。
那就“9*87654321”吧,這次居然不一樣了,變成了“042341403F3E3D3C3B3A”,那“98*7654321”計算出來的結果又太大了。
終于,“87*654321”搞出一個“08F”來,這樣就可以猜出來,還是通過映射出來的字符串與字符串進行比較。映射出來的字符串
可以肯定是16進制范圍的,也就是“0-F”。仔細觀察用來比較的字符串,符合規定的只有兩個:
004065E4 "0817E747D7A7D7C7F82836D74747A7F7E7B7C7D826D817E7B7C“
004054FC “0817E747D”
但是短的那個是不行的,至于原因不清楚,猜測應該是有個長度要求。
映射關系可以通過多次輸入的出(我覺得比看程序更有意思):
1 ? ? 7B ? ? ? 5 ? ?7F ? ? ?9 ? ? ?83
2 ? ? 7C ? ? ? 6 ? ?80 ? ? ?* ? ? ?74
3 ? ? 7D ? ? ? 7 ? ?81 ? ? ?# ? ? ?6D
4 ? ? 7E ? ? ? 8 ? ?82 ? ? ?0 ? ? ?7A
參照這個表,對著上面[004065E4]的內容,就可以得出:
74*3032589#**0541238#7412