破traceboy2.0 高手勿看! (9千字)

看雪資料發表於2001-01-29

破traceboy2.0 高手勿看!
ftp://ftp.eware.com.cn/pub/system/syssafe/traceboy20.zip
traceboy.exe 708KB
我吹:
執行本軟體後,程式將駐留記憶體,時刻記錄著鍵盤的一舉一動,同時可以定時記
錄,並控制軟體執行時間、啟動熱鍵和儲存檔案路徑以及保護軟體執行等多項功
能,隨時可以瀏覽記錄,並可以通網際網路過將記錄檔案傳送給您。

電腦報2001年第3期上有介紹。
怎麼我老跟電腦報過不去?
怎麼跟PCGHOST一樣?
作者倆是親兄弟?
但它多一關聯?
象木馬病毒?
你病我毒!
我ZEST!
gogo!
go!

執行traceboy.exe後,在註冊處填:
姓  名:zzzzzz
註冊碼:1234567890
RUN trw2k103
bpx hmemcpy
按確定後中斷於hmemcpy
bd
pmodule
經過若干RET後到:cs:0048A6E4

:0048A6DF E81424FAFF              call 0042CAF8                      //取姓名
:0048A6E4 8B45F8                  mov eax, dword ptr [ebp-08]        //到這裡
:0048A6E7 E87496F7FF              call 00403D60
:0048A6EC 83F805                  cmp eax, 00000005                  //name number>5
:0048A6EF 0F8EEC030000            jle 0048AAE1                      //jump bye!
:0048A6F5 8D55E0                  lea edx, dword ptr [ebp-20]
:0048A6F8 8B87E0020000            mov eax, dword ptr [edi+000002E0]
:0048A6FE E8F523FAFF              call 0042CAF8                      //註冊碼不能空
:0048A703 837DE000                cmp dword ptr [ebp-20], 00000000
:0048A707 0F84D4030000            je 0048AAE1                        //空 bye!
:0048A70D 33F6                    xor esi, esi
:0048A70F 8D45E8                  lea eax, dword ptr [ebp-18]

* Possible StringData Ref from Code Obj ->"MyNamesZEDLhYScbdQfuBHXtvpqriJACjkFUVTzwxPGngR"
                                        ->"WuKXR"
                                  |
:0048A712 BA30AB4800              mov edx, 0048AB30
:0048A717 E85C94F7FF              call 00403B78
:0048A71C 8D45F0                  lea eax, dword ptr [ebp-10]
:0048A71F E8BC93F7FF              call 00403AE0
:0048A724 8D45F4                  lea eax, dword ptr [ebp-0C]
:0048A727 E8B493F7FF              call 00403AE0
:0048A72C 8D55E4                  lea edx, dword ptr [ebp-1C]
:0048A72F 8B87E0020000            mov eax, dword ptr [edi+000002E0]
:0048A735 E8BE23FAFF              call 0042CAF8                      //取註冊碼
:0048A73A 8B45E4                  mov eax, dword ptr [ebp-1C]        //1234567890
:0048A73D E81E96F7FF              call 00403D60                      //無聊的重複
:0048A742 8BD8                    mov ebx, eax                        //code number=A
:0048A744 85DB                    test ebx, ebx
:0048A746 7E2B                    jle 0048A773
:0048A748 C745FC01000000          mov [ebp-04], 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048A771(C)
|
:0048A74F 8B45E4                  mov eax, dword ptr [ebp-1C]        *//
:0048A752 8B55FC                  mov edx, dword ptr [ebp-04]        *//
:0048A755 0FB64410FF              movzx eax, byte ptr [eax+edx-01]    *//
:0048A75A 8D55DC                  lea edx, dword ptr [ebp-24]        *//
:0048A75D E8C6DBF7FF              call 00408328                      *//
:0048A762 8B55DC                  mov edx, dword ptr [ebp-24]        *//變換後數值放入EDX
:0048A765 8D45F4                  lea eax, dword ptr [ebp-0C]        *//
:0048A768 E8FB95F7FF              call 00403D68                      *//整理成串。
:0048A76D FF45FC                  inc [ebp-04]                        *//
:0048A770 4B                      dec ebx                            *//
:0048A771 75DC                    jne 0048A74F                        *//

注:*//處很重要,是變換填入的註冊碼的,你可進入各CALL看看。
變換過程是這樣的:取註冊碼的一個數值,找出其ASCII碼值(十六進位制),
變換為十進位制。如:
1的ASCII值為31,31的十進位制為49
A的ASCII值為41,31的十進位制為65
a的ASCII值為61,31的十進位制為97
等等等等......
然後整理成串49505152535455565748。
               
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048A746(C)
|
:0048A773 686CAB4800              push 0048AB6C              //f5
:0048A778 FF75F4                  push [ebp-0C]              //49505152535455565748
:0048A77B 6878AB4800              push 0048AB78              //k6
:0048A780 8D45F4                  lea eax, dword ptr [ebp-0C]
:0048A783 BA03000000              mov edx, 00000003
:0048A788 E89396F7FF              call 00403E20              //整理f549505152535455565748k6
:0048A78D 8B45F8                  mov eax, dword ptr [ebp-08]//zzzzzz
:0048A790 E8CB95F7FF              call 00403D60
:0048A795 85C0                    test eax, eax
:0048A797 7E0F                    jle 0048A7A8
......
......
......
後面是zzzzzz變換的過程,好大的迴圈,有你看一陣子的。不寫了,我累?我淚!
誰有空可寫個序號產生器出來。還是別寫了,支援一下國產軟體吧!
......
......
......
:0048A9A9 686CAB4800              push 0048AB6C              //f5
:0048A9AE FF75F0                  push [ebp-10]              //變換得78501145685539055114558850
:0048A9B1 6878AB4800              push 0048AB78              //k6
:0048A9B6 8D45F0                  lea eax, dword ptr [ebp-10]
:0048A9B9 BA03000000              mov edx, 00000003
:0048A9BE E85D94F7FF              call 00403E20              //整理f578501145685539055114558850k6
:0048A9C3 8B45F0                  mov eax, dword ptr [ebp-10]//f578501145685539055114558850k6
:0048A9C6 8B55F4                  mov edx, dword ptr [ebp-0C]//f549505152535455565748k6
:0048A9C9 E8A294F7FF              call 00403E70              //對比CALL可進入看
:0048A9CE 0F8504010000            jne 0048AAD8              //jump bye!
:0048A9D4 8B87D0020000            mov eax, dword ptr [edi+000002D0]//後面的很多CALL變成
:0048A9DA B201                    mov dl, 01                      //三口肉!
:0048A9DC E82F20FAFF              call 0042CA10                    //註冊成功!!
:0048A9E1 8B87D8020000            mov eax, dword ptr [edi+000002D8]
:0048A9E7 33D2                    xor edx, edx
:0048A9E9 E82220FAFF              call 0042CA10
:0048A9EE 8B87E0020000            mov eax, dword ptr [edi+000002E0]
:0048A9F4 33D2                    xor edx, edx
:0048A9F6 E81520FAFF              call 0042CA10
:0048A9FB 8B87E4020000            mov eax, dword ptr [edi+000002E4]
:0048AA01 33D2                    xor edx, edx
:0048AA03 E80820FAFF              call 0042CA10
:0048AA08 8B87E8020000            mov eax, dword ptr [edi+000002E8]
:0048AA0E 33D2                    xor edx, edx
:0048AA10 E8FB1FFAFF              call 0042CA10
:0048AA15 8B87D4020000            mov eax, dword ptr [edi+000002D4]
:0048AA1B 33D2                    xor edx, edx
:0048AA1D E8EE1FFAFF              call 0042CA10
:0048AA22 8B87DC020000            mov eax, dword ptr [edi+000002DC]
:0048AA28 33D2                    xor edx, edx
:0048AA2A E8E11FFAFF              call 0042CA10
:0048AA2F A150634900              mov eax, dword ptr [00496350]
:0048AA34 8B00                    mov eax, dword ptr [eax]
:0048AA36 8B807C030000            mov eax, dword ptr [eax+0000037C]
:0048AA3C 33D2                    xor edx, edx
:0048AA3E E8CD1FFAFF              call 0042CA10
:0048AA43 A150634900              mov eax, dword ptr [00496350]
:0048AA48 8B00                    mov eax, dword ptr [eax]
:0048AA4A 8B8078030000            mov eax, dword ptr [eax+00000378]
:0048AA50 B201                    mov dl, 01
:0048AA52 E8B91FFAFF              call 0042CA10
:0048AA57 B201                    mov dl, 01
:0048AA59 A1BCEF4500              mov eax, dword ptr [0045EFBC]
:0048AA5E E85946FDFF              call 0045F0BC
:0048AA63 8BD8                    mov ebx, eax
:0048AA65 BA02000080              mov edx, 80000002
:0048AA6A 8BC3                    mov eax, ebx
:0048AA6C E8EB46FDFF              call 0045F15C
:0048AA71 33C9                    xor ecx, ecx

* Possible StringData Ref from Code Obj ->"\software\stonari\xpghostd"
                                  |
:0048AA73 BA84AB4800              mov edx, 0048AB84
:0048AA78 8BC3                    mov eax, ebx
:0048AA7A E84547FDFF              call 0045F1C4
:0048AA7F 8D4D90                  lea ecx, dword ptr [ebp-70]

* Possible StringData Ref from Code Obj ->"38309"
                                  |
:0048AA82 BAA8AB4800              mov edx, 0048ABA8

* Possible StringData Ref from Code Obj ->"yesreg"
                                  |
:0048AA87 B8B8AB4800              mov eax, 0048ABB8
:0048AA8C E8B3FAFFFF              call 0048A544                  //組合變換
:0048AA91 8B4D90                  mov ecx, dword ptr [ebp-70]    //變換後得73DF7DC306528A
                                                                  //注:此值每次都變
* Possible StringData Ref from Code Obj ->"zecixy"
                                  |
:0048AA94 BAC8AB4800              mov edx, 0048ABC8
:0048AA99 8BC3                    mov eax, ebx
:0048AA9B E8C04AFDFF              call 0045F560                  //該值寫入登錄檔
:0048AAA0 8BC3                    mov eax, ebx
......
......

**小節**
姓名與註冊碼分別計算變化後對比。
關鍵對比:
:0048A9C3 8B45F0                  mov eax, dword ptr [ebp-10]  //f578501145685539055114558850k6
:0048A9C6 8B55F4                  mov edx, dword ptr [ebp-0C]  //f549505152535455565748k6
:0048A9C9 E8A294F7FF              call 00403E70
:0048A9CE 0F8504010000            jne 0048AAD8
call馬上到jne(je)是DELPHI編寫通病,不不不,
是關鍵!對比處一般在上兩行,
你也可進入此CALL看看即知。
其實此程式根本不用找註冊碼,只要用TRW除錯到
0048A9CE處使其不跳它就乖乖註冊了。
註冊在H_L_M\software\stonari\xpghostd中
zecixy鍵值為73DF7DC306528A
你的值可能與我的不一樣。

由上分析:
一個註冊碼:
f5  78 50 114 56 85 53 90 55 114 55 88 50  k6
    N  2  r  8  U  5  Z  7  r  7  X  2
所以:
姓  名:zzzzzz
註冊碼:N2r8U5Z7r7X2



                                                        /\zest/\
                                                        2001.1

相關文章