oicq build 0425 的不完全破解
申明:本文單純從程式角度談了oicq build 0425 的破解問題。歡
迎閱讀、指教。但本人對由使用本文進行的一切活動不負任
何責任。
如果你可以得到某人的oicq談話記錄檔案,而又對他與其好友的談話記錄感興趣,你會如何呢?用oicq談話閱讀器?可惜它不支援0220以後的版本;再說其作者也會叫你用“窮舉法”來得到密碼,如果設定的密碼在9位以上,用“窮舉法”的時間以日、月計,你就別想了。
其實我們可以毫不費力的進入觀看。
首先將談話資料夾(如7145021)放入oicq安裝目錄下,再在oicq\dat目錄下用ultraedit開啟oicq2000.cfg,在
00000009h處記錄了所使用帳號的個數,後面即為帳號,只要按照“ 07 00 00 00 帳號的ascii碼”形式(如 07 00 00 00 31
31 32 35 34 31 34) 加入即可。若帳號小於7位,還需用 20 補足位數(如 07 00 00 00 31 31 32 35 34 31
20)。
這樣你執行oicq build 0425 後,要看的帳號就出現了,選它,隨便填個密碼。用trw bpx hmemcpy設斷後,按下“登入”,程式為trw阻斷。
bd 中斷斷點
f12 按44下,改
f10 走,
直到
:004370E7 E808A6FFFF call 004316F4
:004370EC 3BC3
cmp eax, ebx <-- ebx恆為0,
eax可為0或1
:004370EE 0F858F010000 jne 00437283
<-- 不跳就失敗
:004370F4 A130D34E00 mov eax,
dword ptr [004ED330]
:004370F9 8945E4
mov dword ptr [ebp-1C], eax
:004370FC 8D45E4
lea eax, dword ptr [ebp-1C]
* Possible Reference to String Resource ID=33357: "e?
!{U
"
|
:004370FF 684D820000 push 0000824D
:00437104 50
push eax
:00437105 C645FC04 mov
[ebp-04], 04
:00437109 E8B707FFFF call 004278C5
:0043710E 59
pop ecx
:0043710F 59
pop ecx
:00437110 53
push ebx
:00437111 6804010000 push 00000104
:00437116 FF75E4
push [ebp-1C]
:00437119 E830650500 call 0048D64E
<--密碼錯誤畫面
所以將 004370EE 0F858F010000
jne 00437283
改為 004370EE 0F848F010000
je 00437283
後,你就可以進入這一帳號了。
如果還被設定了本地密碼,你就先只能隨便填個密碼嘍。用bpx hmemxpy設斷後,f12要按56下,直到你來到
:00432E5D 8D4DF0
lea ecx, dword ptr [ebp-10]
:00432E60 7525
jne 00432E87 <-- 不跳就失敗,所以要讓它跳
:00432E62 E864350500 call 004863CB
:00432E67 E954FFFFFF jmp 00432DC0
這樣你就可以進入他的帳號,看看它的聊天記錄,他的好友名單......
所以我要說,騰訊公司是個不負責任的公司。它應該將輸入的密碼換算後,作為金鑰來解開被加密的談話記錄,而不是僅將其作直接比較。
關於密碼的破解,實在讓我感到煩瑣,所以就沒有去深追。有興趣的朋友可以參考如下:
1、:0046E987 F3 repz
:0046E988 A7 cmpsd <--edi放置了經變換後的輸入密碼,esi放置了加密後正確密碼值。共比較16位,兩者相等表示密碼正確。
:0046E989 7427 je 0046E9B2
2、整個密碼的最重要的變形、換算在
:00442B40 030E add ecx, dword ptr [esi]
.....
:0044343B C3 ret <--很有規律,但也太煩
3、由此得到的數字又經
:004434D5 E821F6FFFF call 00442AFB
<--f8進入,即為第3步
:004434DA 8B44241C mov
eax, dword ptr [esp+1C]
:004434DE 8B0E
mov ecx, dword ptr [esi]
:004434E0 83C40C
add esp, 0000000C
:004434E3 8BD1
mov edx, ecx
......
:00443556 C3
ret
變換,得到第2步中的edi值。