oicq build 0425 的不完全破解 (3千字)

看雪資料發表於2000-05-28

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值。

相關文章