|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-02-09, 02:45 AM | #1 |
榮譽會員
|
AVI/MPEG/RM Joiner4.11脫殼+破解
【脫文作者】 weiyi75[Dfcg]
【作者郵箱】 weiyi75@sohu.com 【作者主頁】 Dfcg官方大本營 【使用工具】 Ollydbg1.09d 【破解平台】 Win2000/XP 【軟體名稱】 AVI/MPEG/RM Joiner4.11 【下載位址】 分兩磁碟區下載 http://218.63.244.68:1010/ckkd/attachment.php?aid=403 http://218.63.244.68:1010/ckkd/attachment.php?aid=404 【軟體簡介】 AVI/MPEG/RM Joiner 將瑣碎影片按順序作結合整理,這個軟體可以說明 你把零散的影片文件組合成為一個大的影片文件,這個程序支持 AVI, MPEG, MPEG-4,DivX 以及 RM 格式影片,它可以將不同格式的影片組合。你可以任意組合或者排列這些片段。 【軟體大小】 2.53M 【加殼方式】 ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov 【保護方式】 沒有使用Asprotcet的Rsa算法保護,採用自行研究的加密算法,啟動時校驗註冊嘛,10天試用期限制,防爆破暗樁。 【脫殼目的】 搜尋Asprotect1.23 RC4的Stolen Code,由於Asprotect動態位址分配,初學者查Stolen Code的直接位置不是很容易的,針對此點,詳細寫出脫殼程序。 【破解宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享,本文感謝csjwaman[DFCG]和Jwh51[DFCG]技術指導,我是Dfcg組織最菜的鳥,偶得一點心得,願與大家分享。 -------------------------------------------------------------------------------- 【破解內容】 首先Peid查殼,脫殼,為ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov。Ollydbg載入程序,無須隱藏OD,因為Asprotect1.23Beta21根本不檢測OD,只對付Softice,Trw2000等,OD異常設定忽略除記憶體異常外的全部異常。 由於Asprotect動態位址分配,大家看到本文記憶體位址將和你不同,但看到的程式碼基本一樣的,脫殼開始。 00401000 > 68 01004D00 push EZMerge.004D0001 //程序開始點,F9執行。 00401005 E8 01000000 call EZMerge.0040100B 0040100A C3 retn 0040100B C3 retn 0040100C C9 leave 0040100D 0AAB 87EED3F2 or ch, byte ptr ds:[ebx+F2D3EE87] 00401013 19CD sbb ebp, ecx 00401015 9C pushfd 00401016 B5 66 mov ch, 66 00401018 AC lods byte ptr ds:[esi] 00401019 42 inc edx 0040101A CA 6D73 retf 736D 0040101D 24 49 and al, 49 0040101F C0B2 DD93689B 3>sal byte ptr ds:[edx+9B6893DD], 3F 00401026 FC cld 00401027 68 8620F597 push 97F52086 0040102C BB DFC3273E mov ebx, 3E27C3DF 00401031 1C 1A sbb al, 1A ..................................................................... 程序異常。 00B32723 3100 xor dword ptr ds:[eax], eax //昏,Asprotect典型最後一次異常,這個不清楚是第幾個beta版本。 00B32725 64:8F05 0000000>pop dword ptr fs:[0] 00B3272C 58 pop eax 00B3272D 833D 805DB300 0>cmp dword ptr ds:[B35D80], 0 00B32734 74 14 je short 00B3274A 00B32736 6A 0C push 0C 00B32738 B9 805DB300 mov ecx, 0B35D80 00B3273D 8D45 F8 lea eax, dword ptr ss:[ebp-8] 00B32740 BA 04000000 mov edx, 4 00B32745 E8 56E7FFFF call 00B30EA0 00B3274A FF75 FC push dword ptr ss:[ebp-4] 00B3274D FF75 F8 push dword ptr ss:[ebp-8] 00B32750 8B45 F4 mov eax, dword ptr ss:[ebp-C] 00B32753 8338 00 cmp dword ptr ds:[eax], 0 00B32756 74 02 je short 00B3275A 00B32758 FF30 push dword ptr ds:[eax] 00B3275A FF75 F0 push dword ptr ss:[ebp-10] 00B3275D FF75 EC push dword ptr ss:[ebp-14] 00B32760 C3 retn //在這裡下斷點,Shift+F9執行到這裡後取消斷點 這裡沒有用記憶體鏡像斷點和模擬跟蹤到達偽Oep,因為前者跳過了Stolen Code的直接位置,後者我目前找不到Stolen Code的直接位置。 下面有無數小跳轉,小循環,可疑Call,用F8極其容易跑飛,沒特別說明,一律F7步過,F4直接執行到指定位置。遇到Call指令,要仔細分析,雖然F7安全,但應為有無數循環,合理切換會節省不少時間。不管它搞什麼飛機,一直往前走,實在無路向上尋找Jmp跳出循環圈。遇到Call較近距離的Call一般用F7步過,我的理解是 相距10個程式碼左右視為近距離Call。Btw,本人寫本文時,失敗25次,幾乎放棄,手動跟蹤是很需要耐心的。好,讀完規則,開始。 00B465E4 /E9 A9090000 jmp 00B46F92 00B46F92 C0FA 5C sar dl, 5C 00B46F95 66:C1D6 78 rcl si, 78 00B46F99 BE 140B43DC mov esi, DC430B14 00B46F9E C1CE B2 ror esi, 0B2 00B46FA1 F7D6 not esi 00B46FA3 8BFE mov edi, esi 00B46FA5 81F7 C1D29B3C xor edi, 3C9BD2C1 00B46FAB 8BC7 mov eax, edi 00B46FAD 0FABFE bts esi, edi 00B46FB0 0F8E 00000000 jle 00B46FB6 00B46FB6 BD C3D7125B mov ebp, 5B12D7C3 00B46FBB C1C5 B1 rol ebp, 0B1 00B46FBE 0F9BC6 setpo dh 00B46FC1 BE 9CEF3961 mov esi, 6139EF9C 00B46FC6 C1CE FC ror esi, 0FC 00B46FC9 81C6 CAA39C15 add esi, 159CA3CA 00B46FCF F7D6 not esi 00B46FD1 8BCE mov ecx, esi 00B46FD3 C1C1 4F rol ecx, 4F 00B46FD6 C1C9 50 ror ecx, 50 00B46FD9 F7D1 not ecx 00B46FDB 81C1 383162EB add ecx, EB623138 00B46FE1 40 inc eax 00B46FE2 8BC8 mov ecx, eax 00B46FE4 D1C1 rol ecx, 1 00B46FE6 81F1 A38FD7AC xor ecx, ACD78FA3 00B46FEC 3BCD cmp ecx, ebp 00B46FEE ^ 0F85 EDFFFFFF jnz 00B46FE1 //小循環,往下看。 00B46FF4 66:0FBED0 movsx dx, al 00B46FF8 8BC0 mov eax, eax 00B46FFA BB 3F9A9286 mov ebx, 86929A3F 00B46FFF C1C3 C9 rol ebx, 0C9 00B47002 8BCB mov ecx, ebx 00B47004 F7D1 not ecx 00B47006 C1C1 CB rol ecx, 0CB 00B47009 81F1 D996075C xor ecx, 5C0796D9 00B4700F - E2 FE loopd short 00B4700F //小循環 00B47011 0FBBF1 btc ecx, esi 00B47014 81E8 2E1AA101 sub eax, 1A11A2E 00B4701A 81C2 1C825C34 add edx, 345C821C 00B47020 81C0 F3DB6B71 add eax, 716BDBF3 00B47026 66:BF 5CCE mov di, 0CE5C 00B4702A E9 13000000 jmp 00B47042 F4直接到這裡。 00B47042 E8 08000000 call 00B4704F 00B4704F 0BEC or ebp, esp 00B47051 E8 14000000 call 00B4706A 00B4706A 5D pop ebp ; 00B47056 00B4706B 5D pop ebp 00B4706C 66:0FBEDA movsx bx, dl 00B47070 81ED B5000000 sub ebp, 0B5 00B47076 8ACC mov cl, ah 00B47078 B2 A2 mov dl, 0A2 00B4707A BE FFFFFFFF mov esi, -1 00B4707F C1CE 70 ror esi, 70 00B47082 03F5 add esi, ebp 00B47084 0FB6D1 movzx edx, cl 00B47087 BA EE3BB311 mov edx, 11B33BEE 00B4708C 81C2 A24BDC45 add edx, 45DC4BA2 00B47092 81C2 583116B7 add edx, B7163158 00B47098 8BCA mov ecx, edx 00B4709A 81F1 47B49D32 xor ecx, 329DB447 00B470A0 8BD1 mov edx, ecx 00B470A2 C1CA DA ror edx, 0DA 00B470A5 81C2 BCF59E17 add edx, 179EF5BC 00B470AB 8BCA mov ecx, edx 00B470AD 81C1 B7E25DDA add ecx, DA5DE2B7 00B470B3 03CD add ecx, ebp 00B470B5 0F93C6 setnb dh 00B470B8 BF B8F72E0D mov edi, 0D2EF7B8 00B470BD C1CF FC ror edi, 0FC 00B470C0 81C7 BDCE64E6 add edi, E664CEBD 00B470C6 D1C8 ror eax, 1 00B470C8 81EF D19F39BC sub edi, BC399FD1 00B470CE 3006 xor byte ptr ds:[esi], al 00B470D0 66:13D1 adc dx, cx 00B470D3 4E dec esi 00B470D4 03FE add edi, esi 00B470D6 51 push ecx 00B470D7 5F pop edi 00B470D8 F601 80 test byte ptr ds:[ecx], 80 00B470DB 0F87 00000000 ja 00B470E1 00B470E1 0F85 09000000 jnz 00B470F0 00B470F0 FE09 dec byte ptr ds:[ecx] 00B470F2 0FBAFA 93 btc edx, 93 00B470F6 66:0FBEDA movsx bx, dl 00B470FA F601 7F test byte ptr ds:[ecx], 7F 00B470FD 66:0FBEFC movsx di, ah 00B47101 ^ 0F85 B1FFFFFF jnz 00B470B8 00B47107 66:23D3 and dx, bx 00B4710A F601 80 test byte ptr ds:[ecx], 80 00B4710D 66:BF 709D mov di, 9D70 00B47111 66:0FBEF8 movsx di, al 00B47115 0F85 1D000000 jnz 00B47138 //注意這句,要跳走。 00B4711B BF F4489BD8 mov edi, D89B48F4 00B47120 F641 01 80 test byte ptr ds:[ecx+1], 80 00B47124 8AF4 mov dh, ah 00B47126 8BDA mov ebx, edx 00B47128 0F84 55000000 je 00B47183 00B4712E 4E dec esi 00B4712F 66:C1DF BD rcr di, 0BD 00B47133 E9 4B000000 jmp 00B47183 //看它跳的距離不是更遠,F4直接到這裡。 00B47138 F641 01 80 test byte ptr ds:[ecx+1], 80 00B47183 81C0 0786D494 add eax, 94D48607 00B47189 0FBAFF 10 btc edi, 10 00B4718D E9 09000000 jmp 00B4719B 00B4719B 41 inc ecx 00B4719C 4A dec edx 00B4719D 3BD3 cmp edx, ebx 00B4719F ^ 0F85 9CFFFFFF jnz 00B47141 //往過去走,不能回頭的。 00B471A5 BF 053A68B9 mov edi, B9683A05 00B471AA F7D7 not edi 00B471AC F7D7 not edi 00B471AE F7D7 not edi 00B471B0 C1CF BC ror edi, 0BC 00B471B3 C1C7 81 rol edi, 81 00B471B6 8BD7 mov edx, edi 00B471B8 C1CA 78 ror edx, 78 00B471BB 8BFA mov edi, edx 00B471BD C1CF 98 ror edi, 98 00B471C0 81C7 AC31B740 add edi, 40B731AC 00B471C6 03FD add edi, ebp 00B471C8 3BF9 cmp edi, ecx 00B471CA 66:0FBEFE movsx di, dh 00B471CE 0F85 1D000000 jnz 00B471F1 //跳走。 00B471D4 E9 0B000000 jmp 00B471E4 //這句比上句跳的位置近,故不F4下來。 00B471F1 BF 1587B8D1 mov edi, D1B88715 00B471F6 81EF 4DD223F0 sub edi, F023D24D 00B471FC 8BD7 mov edx, edi 00B471FE C1CA BE ror edx, 0BE 00B47201 81C2 08414A83 add edx, 834A4108 00B47207 C1C2 55 rol edx, 55 00B4720A 81EA 6FFCC5FA sub edx, FAC5FC6F 00B47210 81C2 C3CD6475 add edx, 7564CDC3 00B47216 03D5 add edx, ebp 00B47218 3BD1 cmp edx, ecx 00B4721A 8BDA mov ebx, edx 00B4721C 0F85 0C000000 jnz 00B4722E 00B4722E BF 1E6AE34B mov edi, 4BE36A1E 00B47233 81C7 0A6370E9 add edi, E970630A 00B47239 81C7 6861422B add edi, 2B426168 00B4723F C1C7 DD rol edi, 0DD 00B47242 8BDF mov ebx, edi 00B47244 81F3 EF149D3A xor ebx, 3A9D14EF 00B4724A 81EB B996C7FC sub ebx, FCC796B9 00B47250 8BFB mov edi, ebx 00B47252 81C7 38CB37C6 add edi, C637CB38 00B47258 03FD add edi, ebp 00B4725A 3BF9 cmp edi, ecx 00B4725C 66:0FBEDA movsx bx, dl 00B47260 0F85 10000000 jnz 00B47276 00B47276 BA 61165802 mov edx, 2581661 00B4727B 81C2 8203B8D1 add edx, D1B80382 00B47281 81C2 EC4526AF add edx, AF2645EC 00B47287 81C2 369F6099 add edx, 99609F36 00B4728D F7D2 not edx 00B4728F 8BFA mov edi, edx 00B47291 C1CF 24 ror edi, 24 00B47294 F7D7 not edi 00B47296 81C7 309636AE add edi, AE369630 00B4729C 03FD add edi, ebp 00B4729E 3BF9 cmp edi, ecx 00B472A0 E8 16000000 call 00B472BB 00B472BB 5F pop edi ; 00B472A5 00B472BC 0F85 09000000 jnz 00B472CB 00B472CB BB 1322C269 mov ebx, 69C22213 00B472D0 F7D3 not ebx 00B472D2 81C3 BC29C269 add ebx, 69C229BC 00B472D8 03DD add ebx, ebp 00B472DA 3BD9 cmp ebx, ecx 00B472DC 66:0FBED4 movsx dx, ah 00B472E0 0F85 17000000 jnz 00B472FD 00B472FD BF 7B608F16 mov edi, 168F607B 00B47302 F7D7 not edi 00B47304 81C7 46688F16 add edi, 168F6846 00B4730A 03FD add edi, ebp 00B4730C 3BF9 cmp edi, ecx 00B4730E 0F8C 00000000 jl 00B47314 00B47314 0F85 0B000000 jnz 00B47325 00B47325 66:0BFB or di, bx 00B47328 BA 24CB104F mov edx, 4F10CB24 00B4732D 81C2 DA931CD5 add edx, D51C93DA 00B47333 81C2 08A1D2DB add edx, DBD2A108 00B47339 FECA dec dl 00B4733B ^ 0F85 F8FFFFFF jnz 00B47339 //小循環 00B47341 BA 64B9AC80 mov edx, 80ACB964 F4下來。 00B47346 F7D2 not edx 00B47348 81C2 ECA52EE7 add edx, E72EA5EC 00B4734E 8BFA mov edi, edx 00B47350 81F7 EBE88166 xor edi, 6681E8EB 00B47356 66:0FBAE2 13 bt dx, 13 00B4735B 03FD add edi, ebp 00B4735D 81D2 B4C54A8E adc edx, 8E4AC5B4 00B47363 81C7 42040000 add edi, 442 00B47369 0FBAFA 4B btc edx, 4B 00B4736D 8BD1 mov edx, ecx 00B4736F 3BF9 cmp edi, ecx 00B47371 66:BF A882 mov di, 82A8 00B47375 66:0FBEF8 movsx di, al 00B47379 ^ 0F85 39FDFFFF jnz 00B470B8 //這裡回跳,看它回跳距離很遠啊,一路沒發現跳出循環語句,往下看。 00B4737F 0FB7D7 movzx edx, di 00B47382 B9 5DDF3979 mov ecx, 7939DF5D 00B47387 C1C1 E7 rol ecx, 0E7 00B4738A 81E9 A9AEEF9C sub ecx, 9CEFAEA9 00B47390 - E2 FE loopd short 00B47390 //循環語句。 00B47392 663CE ror si, cl 00B47395 B9 BFB2FFFF mov ecx, FFFFB2BF 00B4739A C1C1 5D rol ecx, 5D 00B4739D 0F81 00000000 jno 00B473A3 00B473A3 03CD add ecx, ebp 00B473A5 66:0FBEFE movsx di, dh 00B473A9 FFE1 jmp ecx //這裡估計是循環出口,F4下來。又往回跳,往下看已經無路可走。 00B473AB 66:BB 103C mov bx, 3C10 //如果你F4試突到這裡,程序直接跑飛。 00B473AF 0FB7D1 movzx edx, cx 00B473B2 BB 260260ED mov ebx, ED600226 00B473B7 C1C3 DF rol ebx, 0DF 00B473BA C1CB FC ror ebx, 0FC 00B473BD C1C3 81 rol ebx, 81 00B473C0 8BCB mov ecx, ebx 00B473C2 F7D1 not ecx 00B473C4 C1C1 5F rol ecx, 5F 00B473C7 81E9 B1EEFF94 sub ecx, 94FFEEB1 00B473CD - E2 FE loopd short 00B473CD 00B473CF 32FA xor bh, dl 00B473D1 0FB6D1 movzx edx, cl 00B473D4 8080 80808080 0>add byte ptr ds:[eax+80808080], 0 00B473DB 8080 80800080 0>add byte ptr ds:[eax+80008080], 0 .................................................................. 00B465E9 02C7 add al, bh 只好到這裡。 00B465EB 0F99C0 setns al 00B465EE E8 00000000 call 00B465F3 00B465F3 5B pop ebx 00B465F4 81C3 7E000000 add ebx, 7E 00B465FA 66:8BFE mov di, si 00B465FD BD 7441326A mov ebp, 6A324174 00B46602 C1C5 47 rol ebp, 47 00B46605 8BC5 mov eax, ebp 00B46607 81F0 D37C35BA xor eax, BA357CD3 00B4660D 81E8 D5E64F84 sub eax, 844FE6D5 00B46613 0FB6CF movzx ecx, bh 00B46616 BF 7E4AC4B8 mov edi, B8C44A7E 00B4661B 81F7 29BA0368 xor edi, 6803BA29 00B46621 8BF7 mov esi, edi 00B46623 0FBBD5 btc ebp, edx 00B46626 66:C1D1 A3 rcl cx, 0A3 00B4662A 3133 xor dword ptr ds:[ebx], esi 00B4662C B2 F1 mov dl, 0F1 00B4662E 83C3 04 add ebx, 4 00B46631 12EC adc ch, ah 00B46633 66:B9 522A mov cx, 2A52 00B46637 40 inc eax 00B46638 66:81ED 3F11 sub bp, 113F 00B4663D 81F8 59E2C51E cmp eax, 1EC5E259 00B46643 E8 18000000 call 00B46660 00B46660 5D pop ebp ; 00B46648 00B46661 ^ 0F85 BCFFFFFF jnz 00B46623 //往回跳,去吧。 00B46667 0FB7FD movzx edi, bp 00B4666A 90 nop 00B4666B 90 nop 00B4666C 90 nop 00B4666D 90 nop 00B4666E 90 nop 00B4666F 90 nop 00B46670 90 nop 00B46671 80CD 0C or ch, 0C 00B46674 B0 B1 mov al, 0B1 00B46676 18C1 sbb cl, al 00B46678 D057 F0 rcl byte ptr ds:[edi-10], 1 00B4667B F1 int1 //注意,int1陷阱標誌。 00B4667C E7 F3 out 0F3, eax 00B4667E FD std 00B4667F 05 03079802 add eax, 2980703 00B46684 ^ EB B1 jmp short 00B46637 .................................................................. 00B46623 0FBBD5 btc ebp, edx 00B46626 66:C1D1 A3 rcl cx, 0A3 00B4662A 3133 xor dword ptr ds:[ebx], esi 00B4662C B2 F1 mov dl, 0F1 00B4662E 83C3 04 add ebx, 4 00B46631 12EC adc ch, ah 00B46633 66:B9 522A mov cx, 2A52 00B46637 40 inc eax 00B46638 66:81ED 3F11 sub bp, 113F 00B4663D 81F8 59E2C51E cmp eax, 1EC5E259 00B46643 E8 18000000 call 00B46660 00B46660 5D pop ebp ; 00B46648 00B46661 ^ 0F85 BCFFFFFF jnz 00B46623 發現是個循環圈,第三次到這裡是發現int1沒有了。 00B46667 0FB7FD movzx edi, bp F4下來。 00B4666A 90 nop 00B4666B 90 nop 00B4666C 90 nop 00B4666D 90 nop 00B4666E 90 nop 00B4666F 90 nop 00B46670 90 nop 00B46671 80CD 0C or ch, 0C 00B46674 B0 E6 mov al, 0E6 00B46676 E8 06000000 call 00B46681 00B46681 50 push eax 00B46682 68 C53BE670 push 70E63BC5 00B46687 80E4 E6 and ah, 0E6 00B4668A 58 pop eax 00B4668B 80D9 BE sbb cl, 0BE 00B4668E 59 pop ecx 00B4668F 5A pop edx 00B46690 66:81E1 96AB and cx, 0AB96 00B46695 66:81C0 22EB add ax, 0EB22 00B4669A 81C2 12090000 add edx, 912 00B466A0 80EF 0F sub bh, 0F 00B466A3 E9 0A000000 jmp 00B466B2 00B466B2 33FF xor edi, edi 00B466B4 81E8 2A38FE1E sub eax, 1EFE382A 00B466BA 0FB7CB movzx ecx, bx 00B466BD FF3417 push dword ptr ds:[edi+edx] 00B466C0 66:8BCE mov cx, si 00B466C3 5E pop esi 00B466C4 80DD DA sbb ch, 0DA 00B466C7 E9 0D000000 jmp 00B466D9 00B466D9 81C6 C813B104 add esi, 4B113C8 00B466DF 8BDE mov ebx, esi 00B466E1 81F6 618C1C08 xor esi, 81C8C61 00B466E7 0F83 10000000 jnb 00B466FD 00B466FD 81C6 8683F35A add esi, 5AF38386 00B46703 0FB7C3 movzx eax, bx 00B46706 56 push esi 00B46707 80D8 DE sbb al, 0DE 00B4670A 8F043A pop dword ptr ds:[edx+edi] 00B4670D 66:8BC3 mov ax, bx 00B46710 81D0 B63F465B adc eax, 5B463FB6 00B46716 0FBFC9 movsx ecx, cx 00B46719 0FB7C3 movzx eax, bx 00B4671C 83EF 02 sub edi, 2 00B4671F 66:BB 6602 mov bx, 266 00B46723 68 546EF620 push 20F66E54 00B46728 E9 08000000 jmp 00B46735 00B46735 8BC3 mov eax, ebx 00B46737 5B pop ebx 00B46738 4F dec edi 00B46739 4F dec edi 00B4673A B8 699A4440 mov eax, 40449A69 00B4673F 81FF C8F7FFFF cmp edi, -838 00B46745 ^ 0F85 72FFFFFF jnz 00B466BD //遠距離回跳。 00B4674B 0FBFD9 movsx ebx, cx F4到這裡發現語句變化。 00B4674E 0F8D 05000000 jge 00B46759 00B46754 BB 52BE775A mov ebx, 5A77BE52 00B46759 D2C4 rol ah, cl 00B4675B 86A0 76EF36AD xchg byte ptr ds:[eax+AD36EF76], ah 00B46761 53 push ebx 00B46762 DC5F 74 fcomp qword ptr ds:[edi+74] 00B46765 26:17 pop ss 00B46767 8A50 A2 mov dl, byte ptr ds:[eax-5E] 00B4676A EB 67 jmp short 00B467D3 ...................................................... 變為。 00B46745 ^\0F85 72FFFFFF jnz 00B466BD 00B4674B 0FBFD9 movsx ebx, cx 00B4674E 0F8D 05000000 jge 00B46759 00B46754 BB 52BE775A mov ebx, 5A77BE52 00B46759 81D8 1E08E512 sbb eax, 12E5081E 00B4675F E8 14000000 call 00B46778 F7跟進。 00B46764 CC int3 //int3陷阱。 00B46778 0FB7C3 movzx eax, bx 00B4677B 5A pop edx 00B4677C 81D1 2C4B0161 adc ecx, 61014B2C 00B46782 81C2 29080000 add edx, 829 00B46788 0FBFC8 movsx ecx, ax 00B4678B 2BFF sub edi, edi 00B4678D B8 65EAE87A mov eax, 7AE8EA65 00B46792 8B343A mov esi, dword ptr ds:[edx+edi] 00B46795 BB F4B52157 mov ebx, 5721B5F4 00B4679A 81EE 7A0C6118 sub esi, 18610C7A 00B467A0 8BCF mov ecx, edi 00B467A2 81EE 2BAC7B13 sub esi, 137BAC2B 00B467A8 E9 14000000 jmp 00B467C1 00B467C1 81C6 88985F0E add esi, 0E5F9888 00B467C7 0F82 03000000 jb 00B467D0 00B467CD 66:8BC7 mov ax, di 00B467D0 56 push esi 00B467D1 68 3E483946 push 4639483E 00B467D6 E8 0A000000 call 00B467E5 00B467E5 80E0 1C and al, 1C 00B467E8 58 pop eax 00B467E9 5B pop ebx 00B467EA 8F043A pop dword ptr ds:[edx+edi] 00B467ED 0F8B 00000000 jpo 00B467F3 00B467F3 0F8A 19000000 jpe 00B46812 //和下句是一樣的。 00B467F9 E9 14000000 jmp 00B46812 00B46812 81EF 81A07C2A sub edi, 2A7CA081 00B46818 81C7 7DA07C2A add edi, 2A7CA07D 00B4681E B3 B1 mov bl, 0B1 00B46820 81FF ACF8FFFF cmp edi, -754 00B46826 ^ 0F85 66FFFFFF jnz 00B46792 //遠距離回跳。 00B4682C E9 0C000000 jmp 00B4683D F4直接下來。 00B4683D 81E0 7E9BBF4A and eax, 4ABF9B7E 00B46843 66:BE F59F mov si, 9FF5 00B46847 8BDA mov ebx, edx 00B46849 E8 0B000000 call 00B46859 00B46859 0FB7C7 movzx eax, di 00B4685C 66:BB 924D mov bx, 4D92 00B46860 5F pop edi 00B46861 81C6 8C2D5819 add esi, 19582D8C 00B46867 80E4 78 and ah, 78 00B4686A 66:8BDE mov bx, si 00B4686D 81C7 3D070000 add edi, 73D 00B46873 0F8F 1D000000 jg 00B46896 00B46896 0F89 14000000 jns 00B468B0 //和下面的跳轉比較一下距離,選上面的。 00B4689C E9 0D000000 jmp 00B468AE 00B468B0 8AC3 mov al, bl 00B468B2 BA 00000000 mov edx, 0 00B468B7 53 push ebx 00B468B8 51 push ecx 00B468B9 8AE6 mov ah, dh 00B468BB 66:8BF3 mov si, bx 00B468BE 58 pop eax 00B468BF 81D0 68227222 adc eax, 22722268 00B468C5 58 pop eax 00B468C6 FF343A push dword ptr ds:[edx+edi] 00B468C9 59 pop ecx 00B468CA 57 push edi 00B468CB E8 0F000000 call 00B468DF 00B468DF E8 0D000000 call 00B468F1 00B468F1 5E pop esi ; 00B468E4 00B468F2 E9 0D000000 jmp 00B46904 00B46904 0FBFF6 movsx esi, si 00B46907 58 pop eax 00B46908 50 push eax 00B46909 8AE7 mov ah, bh 00B4690B E9 0A000000 jmp 00B4691A 00B4691A 58 pop eax ; 00B468D0 00B4691B 5B pop ebx 00B4691C 68 A5FDC95B push 5BC9FDA5 00B46921 0F89 02000000 jns 00B46929 00B46929 68 A3CA2134 push 3421CAA3 00B4692E 66:8BC6 mov ax, si 00B46931 B4 1D mov ah, 1D 00B46933 5E pop esi 00B46934 58 pop eax 00B46935 81C1 FC082313 add ecx, 132308FC 00B4693B E9 14000000 jmp 00B46954 00B46954 E8 06000000 call 00B4695F 00B4695F /0F8E 0D000000 jle 00B46972 00B46965 |66:8BC2 mov ax, dx 00B46968 |E9 05000000 jmp 00B46972 00B46972 58 pop eax ; 00B46959 00B46973 81F1 85CB8F41 xor ecx, 418FCB85 00B46979 0F89 03000000 jns 00B46982 00B46982 81E9 DA5D1A68 sub ecx, 681A5DDA 00B46988 68 8E387317 push 1773388E 00B4698D B0 00 mov al, 0 00B4698F 66:8BD9 mov bx, cx 00B46992 8BF7 mov esi, edi 00B46994 5E pop esi 00B46995 51 push ecx 00B46996 68 D8431256 push 561243D8 00B4699B 66:81E8 EE15 sub ax, 15EE 00B469A0 68 1C41EC13 push 13EC411C 00B469A5 B3 53 mov bl, 53 00B469A7 BB B4977504 mov ebx, 47597B4 00B469AC 5B pop ebx 00B469AD B8 D95C8E54 mov eax, 548E5CD9 00B469B2 5E pop esi 00B469B3 8F0417 pop dword ptr ds:[edi+edx] 00B469B6 66:BB AABE mov bx, 0BEAA 00B469BA 68 1352D049 push 49D05213 00B469BF 8BF1 mov esi, ecx 00B469C1 66:8BDE mov bx, si 00B469C4 B7 00 mov bh, 0 00B469C6 5B pop ebx 00B469C7 81EA B93B2721 sub edx, 21273BB9 00B469CD 80C0 98 add al, 98 00B469D0 81C2 B53B2721 add edx, 21273BB5 00B469D6 0F8B 29000000 jpo 00B46A05 00B469DC 0F80 00000000 jo 00B469E2 00B469E2 E8 11000000 call 00B469F8 00B469F8 66:81C6 362E add si, 2E36 00B469FD 66:81E8 C2F7 sub ax, 0F7C2 00B46A02 56 push esi 00B46A03 58 pop eax 00B46A04 5B pop ebx 00B46A05 81FA C0FAFFFF cmp edx, -540 00B46A0B ^ 0F85 B5FEFFFF jnz 00B468C6 //遠距離回跳。 00B46A11 68 4BA0BC32 push 32BCA04B F4直接下來。 00B46A16 0F80 1A000000 jo 00B46A36 00B46A1C E8 12000000 call 00B46A33 00B46A33 58 pop eax ; 00B46A21 00B46A34 B0 20 mov al, 20 00B46A36 E9 0B000000 jmp 00B46A46 00B46A46 81E0 64776704 and eax, 4677764 00B46A4C 58 pop eax 00B46A4D B3 13 mov bl, 13 00B46A4F 66:B8 835A mov ax, 5A83 00B46A53 66:8BCA mov cx, dx 00B46A56 E8 14000000 call 00B46A6F 00B46A6F 66:B9 C734 mov cx, 34C7 00B46A73 5B pop ebx 00B46A74 66:81E9 6022 sub cx, 2260 00B46A79 81C3 32050000 add ebx, 532 00B46A7F 81EA D5C72466 sub edx, 6624C7D5 00B46A85 B5 DD mov ch, 0DD 00B46A87 2BFF sub edi, edi 00B46A89 0FB7CF movzx ecx, di 00B46A8C FF341F push dword ptr ds:[edi+ebx] 00B46A8F 80DC A8 sbb ah, 0A8 00B46A92 5E pop esi 00B46A93 E9 0C000000 jmp 00B46AA4 00B46AA4 66:8BC3 mov ax, bx 00B46AA7 81F6 CEE1E50E xor esi, 0EE5E1CE 00B46AAD 0F85 24000000 jnz 00B46AD7 00B46AD7 B1 9E mov cl, 9E 00B46AD9 81C6 EF180256 add esi, 560218EF 00B46ADF 0F82 03000000 jb 00B46AE8 00B46AE5 0FB7CF movzx ecx, di 00B46AE8 0F89 07000000 jns 00B46AF5 00B46AEE 66:BA 1474 mov dx, 7414 00B46AF2 66:8BC6 mov ax, si 00B46AF5 81C6 FC9F573A add esi, 3A579FFC 00B46AFB 66:BA 98BC mov dx, 0BC98 00B46AFF 68 D6E05F34 push 345FE0D6 00B46B04 66:8BCF mov cx, di 00B46B07 E8 05000000 call 00B46B11 00B46B11 0FB7CA movzx ecx, dx 00B46B14 5A pop edx 00B46B15 59 pop ecx 00B46B16 56 push esi 00B46B17 0F8B 20000000 jpo 00B46B3D 00B46B3D 8F043B pop dword ptr ds:[ebx+edi] 00B46B40 E9 11000000 jmp 00B46B56 00B46B56 81D2 5D67AA12 adc edx, 12AA675D 00B46B5C 81EF A36DC860 sub edi, 60C86DA3 00B46B62 B6 8E mov dh, 8E 00B46B64 81C7 9F6DC860 add edi, 60C86D9F 00B46B6A 68 B8CB2276 push 7622CBB8 00B46B6F B6 EB mov dh, 0EB 00B46B71 66:8BC7 mov ax, di 00B46B74 59 pop ecx 00B46B75 81FF 2CFCFFFF cmp edi, -3D4 00B46B7B 0F85 26000000 jnz 00B46BA7 00B46BA7 66:81C0 0631 add ax, 3106 00B46BAC ^ E9 DBFEFFFF jmp 00B46A8C 回跳。 00B46BB1 F4 hlt //好可怕。 00B46A8C FF341F push dword ptr ds:[edi+ebx] 00B46A8F 80DC A8 sbb ah, 0A8 00B46A92 5E pop esi 00B46A93 E9 0C000000 jmp 00B46AA4 00B46AA4 66:8BC3 mov ax, bx 00B46AA7 81F6 CEE1E50E xor esi, 0EE5E1CE 00B46AAD 0F85 24000000 jnz 00B46AD7 00B46AD7 B1 9E mov cl, 9E 00B46AD9 81C6 EF180256 add esi, 560218EF 00B46ADF 0F82 03000000 jb 00B46AE8 00B46AE5 0FB7CF movzx ecx, di 00B46AE8 0F89 07000000 jns 00B46AF5 00B46AF5 81C6 FC9F573A add esi, 3A579FFC 00B46AFB 66:BA 98BC mov dx, 0BC98 00B46AFF 68 D6E05F34 push 345FE0D6 00B46B04 66:8BCF mov cx, di 00B46B07 E8 05000000 call 00B46B11 //又循環回了。 00B46B0C 29AE 4FDCE50F sub dword ptr ds:[esi+FE5DC4F], ebp 00B46B12 B7 CA mov bh, 0CA 00B46B14 5A pop edx 00B46B15 59 pop ecx 00B46B16 56 push esi 00B46B17 0F8B 20000000 jpo 00B46B3D 00B46B3D 8F043B pop dword ptr ds:[ebx+edi] 00B46B40 E9 11000000 jmp 00B46B56 00B46B56 81D2 5D67AA12 adc edx, 12AA675D 00B46B5C 81EF A36DC860 sub edi, 60C86DA3 00B46B62 B6 8E mov dh, 8E 00B46B64 81C7 9F6DC860 add edi, 60C86D9F 00B46B6A 68 B8CB2276 push 7622CBB8 00B46B6F B6 EB mov dh, 0EB 00B46B71 66:8BC7 mov ax, di 00B46B74 59 pop ecx 00B46B75 81FF 2CFCFFFF cmp edi, -3D4 00B46B7B 0F85 26000000 jnz 00B46BA7 00B46BA7 66:81C0 0631 add ax, 3106 00B46BAC ^ E9 DBFEFFFF jmp 00B46A8C 00B46BB1 F4 hlt //必須突破它。捲軸往上看。 ................................................... 00B46B93 /E9 25000000 jmp 00B46BBD //循環出口,F4到這裡。 00B46B98 |FB sti 00B46B99 |1871 56 sbb byte ptr ds:[ecx+56], dh 00B46B9C |D7 xlat byte ptr ds:[ebx+al] 00B46B9D |C4AD E27330A9 les ebp, fword ptr ss:[ebp+A93073E2] 00B46BA3 |2E:CF iretd 00B46BA5 |5C pop esp 00B46BA6 |65:66:81C0 0631 add ax, 3106 00B46BAC ^\E9 DBFEFFFF jmp 00B46A8C 00B46BB1 F4 hlt .................................................... 00B46BBD 66:B9 A3CD mov cx, 0CDA3 00B46BC1 0FBFDE movsx ebx, si 00B46BC4 8BCF mov ecx, edi 00B46BC6 E8 06000000 call 00B46BD1 00B46BD1 0FB7C7 movzx eax, di 00B46BD4 E8 0F000000 call 00B46BE8 00B46BE8 66:B8 71F8 mov ax, 0F871 00B46BEC 59 pop ecx 00B46BED B0 AA mov al, 0AA 00B46BEF 5F pop edi 00B46BF0 E9 0E000000 jmp 00B46C03 00B46C03 B9 BFE4346D mov ecx, 6D34E4BF 00B46C08 81C7 C3030000 add edi, 3C3 00B46C0E 0FB7C2 movzx eax, dx 00B46C11 80E5 24 and ch, 24 00B46C14 68 42A9D32F push 2FD3A942 00B46C19 66:81D9 A847 sbb cx, 47A8 00B46C1E 58 pop eax 00B46C1F 68 00000000 push 0 00B46C24 81E8 3E801E13 sub eax, 131E803E 00B46C2A 50 push eax 00B46C2B 81E1 1659482D and ecx, 2D485916 00B46C31 0FB7CB movzx ecx, bx 00B46C34 5B pop ebx 00B46C35 5A pop edx 00B46C36 FF343A push dword ptr ds:[edx+edi] 00B46C39 B0 63 mov al, 63 00B46C3B 66:81F0 9EF5 xor ax, 0F59E 00B46C40 5E pop esi 00B46C41 80ED 38 sub ch, 38 00B46C44 66:B9 7768 mov cx, 6877 00B46C48 66:8BC3 mov ax, bx 00B46C4B 81F6 7043A414 xor esi, 14A44370 00B46C51 8AC2 mov al, dl 00B46C53 B9 675D872F mov ecx, 2F875D67 00B46C58 81E0 80D0F73D and eax, 3DF7D080 00B46C5E 81F6 E9061D6F xor esi, 6F1D06E9 00B46C64 81DB 7545DB24 sbb ebx, 24DB4575 00B46C6A 81EE 6E1FAD28 sub esi, 28AD1F6E 00B46C70 68 982F2F27 push 272F2F98 00B46C75 66:BB 44AD mov bx, 0AD44 00B46C79 59 pop ecx 00B46C7A 66:B8 2900 mov ax, 29 00B46C7E 893417 mov dword ptr ds:[edi+edx], esi 00B46C81 68 E575097E push 7E0975E5 00B46C86 81C9 8616191B or ecx, 1B191686 00B46C8C 59 pop ecx 00B46C8D B8 E3A4403D mov eax, 3D40A4E3 00B46C92 0F80 03000000 jo 00B46C9B 00B46C98 80C7 5B add bh, 5B 00B46C9B 83EA 04 sub edx, 4 00B46C9E 66:81EB 0DC7 sub bx, 0C70D 00B46CA3 81FA 20FDFFFF cmp edx, -2E0 00B46CA9 ^ 0F85 87FFFFFF jnz 00B46C36 //遠距離回跳。 00B46CAF 66:8BC2 mov ax, dx F4下來。 00B46CB2 E8 09000000 call 00B46CC0 00B46CC0 5A pop edx ; 00B46CB7 00B46CC1 66:81E3 0DA2 and bx, 0A20D 00B46CC6 81C2 D7020000 add edx, 2D7 00B46CCC E8 05000000 call 00B46CD6 00B46CD6 /E9 0D000000 jmp 00B46CE8 00B46CE8 5E pop esi ; 00B46CD1 00B46CE9 B8 964DDE4F mov eax, 4FDE4D96 00B46CEE 81C0 F3B221B0 add eax, B021B2F3 00B46CF4 BE B343CB18 mov esi, 18CB43B3 00B46CF9 8B0A mov ecx, dword ptr ds:[edx] 00B46CFB BB 9C10B705 mov ebx, 5B7109C 00B46D00 81E9 F3EBCE1E sub ecx, 1ECEEBF3 00B46D06 81C1 B0B0F05A add ecx, 5AF0B0B0 00B46D0C 81C6 34D7DA7B add esi, 7BDAD734 00B46D12 81F1 290B7166 xor ecx, 66710B29 00B46D18 E8 08000000 call 00B46D25 00B46D25 80E7 93 and bh, 93 00B46D28 5B pop ebx 00B46D29 890A mov dword ptr ds:[edx], ecx 00B46D2B 0FBFF9 movsx edi, cx 00B46D2E 83EA 04 sub edx, 4 00B46D31 8BFA mov edi, edx 00B46D33 81E8 01000000 sub eax, 1 00B46D39 0F85 15000000 jnz 00B46D54 //到這裡時。 00B46D3F /0F8F 04000000 jg 00B46D49 00B46D45 |66:BF 1870 mov di, 7018 00B46D49 \E9 20000000 jmp 00B46D6E //看到它跳的較遠,冒險F4下來。 00B46D6E 66:B8 CB3A mov ax, 3ACB 00B46D72 E8 0D000000 call 00B46D84 00B46D84 B8 312D8238 mov eax, 38822D31 00B46D89 5F pop edi 00B46D8A 66:B8 6D6B mov ax, 6B6D 00B46D8E 81C7 14020000 add edi, 214 00B46D94 68 00000000 push 0 00B46D99 BE ABFA6410 mov esi, 1064FAAB 00B46D9E 5A pop edx 00B46D9F E8 0B000000 call 00B46DAF 00B46DAF 66:8BF1 mov si, cx 00B46DB2 5B pop ebx 00B46DB3 8B0C17 mov ecx, dword ptr ds:[edi+edx] 00B46DB6 8BC2 mov eax, edx 00B46DB8 81E9 24379D55 sub ecx, 559D3724 00B46DBE 8BF2 mov esi, edx 00B46DC0 81E9 8DA29524 sub ecx, 2495A28D 00B46DC6 E8 06000000 call 00B46DD1 00B46DD1 58 pop eax ; 00B46DCB 00B46DD2 81C1 425C4B31 add ecx, 314B5C42 00B46DD8 51 push ecx 00B46DD9 B3 42 mov bl, 42 00B46DDB 8F0417 pop dword ptr ds:[edi+edx] 00B46DDE 0FB7F7 movzx esi, di 00B46DE1 81EB 617A2341 sub ebx, 41237A61 00B46DE7 83EA 04 sub edx, 4 00B46DEA 66:8BC7 mov ax, di 00B46DED 81FA 90FEFFFF cmp edx, -170 00B46DF3 0F85 0F000000 jnz 00B46E08 00B46DF9 E9 21000000 jmp 00B46E1F //F4選項後者。 00B46E1F 5B pop ebx 00B46E20 58 pop eax 00B46E21 05 78DBE9C7 add eax, C7E9DB78 00B46E26 5C pop esp 00B46E27 EB 16 jmp short 00B46E3F 00B46E3F 03C3 add eax, ebx 00B46E41 BB 26000000 mov ebx, 26 00B46E46 0BDB or ebx, ebx 00B46E48 75 02 jnz short 00B46E4C 00B46E4C E8 00000000 call 00B46E51 00B46E51 5D pop ebp ; 00B46E51 00B46E52 81ED E67F4900 sub ebp, 497FE6 00B46E58 8D8D D47F4900 lea ecx, dword ptr ss:[ebp+497FD4] 00B46E5E 2BC1 sub eax, ecx 00B46E60 8985 D07F4900 mov dword ptr ss:[ebp+497FD0], eax 00B46E66 8D85 BE7F4900 lea eax, dword ptr ss:[ebp+497FBE] 00B46E6C 8D8D 27804900 lea ecx, dword ptr ss:[ebp+498027] 00B46E72 03CB add ecx, ebx 00B46E74 8941 01 mov dword ptr ds:[ecx+1], eax 00B46E77 8D85 D47F4900 lea eax, dword ptr ss:[ebp+497FD4] 00B46E7D 8D8D C27F4900 lea ecx, dword ptr ss:[ebp+497FC2] 00B46E83 8901 mov dword ptr ds:[ecx], eax 00B46E85 B8 53010000 mov eax, 153 00B46E8A 8D8D C77F4900 lea ecx, dword ptr ss:[ebp+497FC7] 00B46E90 8901 mov dword ptr ds:[ecx], eax 00B46E92 55 push ebp //Stolen Code!!!! 00B46E93 8BEC mov ebp, esp 00B46E95 6A FF push -1 00B46E97 68 50124800 push 481250 00B46E9C 68 58D34400 push 44D358 00B46EA1 64:A1 00000000 mov eax, dword ptr fs:[0] 00B46EA7 50 push eax 00B46EA8 64:8925 0000000>mov dword ptr fs:[0], esp 00B46EAF 83EC 58 sub esp, 58 00B46EB2 53 push ebx 00B46EB3 56 push esi 00B46EB4 57 push edi 00B46EB5 8965 E8 mov dword ptr ss:[ebp-18], esp //到這裡結束。 00B46EB8 68 296EB400 push 0B46E29 00B46EBD C3 retn 00B46E29 60 pushad 00B46E2A 9C pushfd 00B46E2B FC cld 00B46E2C BF 3F6EB400 mov edi, 0B46E3F 00B46E31 B9 53010000 mov ecx, 153 00B46E36 F3:AA rep stos byte ptr es:[edi] //呵,看著它吧我們走過的痕跡全部清除,BT,我們已經找到了Stolen Code. 00B46E38 9D popfd 00B46E39 61 popad 00B46E3A - E9 656390FF jmp EZMerge.0044D1A4 ........................................................... 這裡是整理出來的Stolen Code共38個字元。 00B46E92 55 push ebp //Stolen Code!!!! 00B46E93 8BEC mov ebp, esp 00B46E95 6A FF push -1 00B46E97 68 50124800 push 481250 00B46E9C 68 58D34400 push 44D358 00B46EA1 64:A1 00000000 mov eax, dword ptr fs:[0] 00B46EA7 50 push eax 00B46EA8 64:8925 0000000>mov dword ptr fs:[0], esp 00B46EAF 83EC 58 sub esp, 58 00B46EB2 53 push ebx 00B46EB3 56 push esi 00B46EB4 57 push edi 00B46EB5 8965 E8 mov dword ptr ss:[ebp-18], esp //Stolen Code!!!! 0044D17E 0000 add byte ptr ds:[eax], al 0044D180 0000 add byte ptr ds:[eax], al 0044D182 0000 add byte ptr ds:[eax], al 0044D184 0000 add byte ptr ds:[eax], al 0044D186 0000 add byte ptr ds:[eax], al 0044D188 0000 add byte ptr ds:[eax], al 0044D18A 0000 add byte ptr ds:[eax], al 0044D18C 0000 add byte ptr ds:[eax], al 0044D18E 0000 add byte ptr ds:[eax], al 0044D190 0000 add byte ptr ds:[eax], al 0044D192 0000 add byte ptr ds:[eax], al 0044D194 0000 add byte ptr ds:[eax], al 0044D196 0000 add byte ptr ds:[eax], al 0044D198 0000 add byte ptr ds:[eax], al 0044D19A 0000 add byte ptr ds:[eax], al 0044D19C 0000 add byte ptr ds:[eax], al 0044D19E 0000 add byte ptr ds:[eax], al 0044D1A0 0000 add byte ptr ds:[eax], al 0044D1A2 0000 add byte ptr ds:[eax], al 0044D1A4 FF15 80224700 call dword ptr ds:[472280] //偽Oep 0044D1AA 33D2 xor edx, edx 0044D1AC 8AD4 mov dl, ah 0044D1AE 8915 E8D34900 mov dword ptr ds:[49D3E8], edx 0044D1B4 8BC8 mov ecx, eax 0044D1B6 81E1 FF000000 and ecx, 0FF .................................................................. 到這裡Stolen Code尋找完畢。 介紹Jwh51[Dfcg]的快捷找Stolen Code方法。 OD載入程序 00401000 > 68 01004D00 push EZMerge.004D0001 00401005 E8 01000000 call EZMerge.0040100B //F8到這裡看暫存器ESP的值0012FFC0 0040100A C3 retn 0040100B C3 retn 0040100C C9 leave 0040100D 0AAB 87EED3F2 or ch, byte ptr ds:[ebx+F2D3EE87] 00401013 19CD sbb ebp, ecx 00401015 9C pushfd 00401016 B5 66 mov ch, 66 00401018 AC lods byte ptr ds:[esi] 00401019 42 inc edx 0040101A CA 6D73 retf 736D 0040101D 24 49 and al, 49 .............................................. 程序最後一次異常。 00B32723 3100 xor dword ptr ds:[eax], eax 00B32725 64:8F05 0000000>pop dword ptr fs:[0] 00B3272C 58 pop eax 00B3272D 833D 805DB300 0>cmp dword ptr ds:[B35D80], 0 00B32734 74 14 je short 00B3274A 00B32736 6A 0C push 0C 00B32738 B9 805DB300 mov ecx, 0B35D80 00B3273D 8D45 F8 lea eax, dword ptr ss:[ebp-8] 00B32740 BA 04000000 mov edx, 4 00B32745 E8 56E7FFFF call 00B30EA0 00B3274A FF75 FC push dword ptr ss:[ebp-4] 00B3274D FF75 F8 push dword ptr ss:[ebp-8] 00B32750 8B45 F4 mov eax, dword ptr ss:[ebp-C] 00B32753 8338 00 cmp dword ptr ds:[eax], 0 00B32756 74 02 je short 00B3275A 00B32758 FF30 push dword ptr ds:[eax] 00B3275A FF75 F0 push dword ptr ss:[ebp-10] 00B3275D FF75 EC push dword ptr ss:[ebp-14] 00B32760 C3 retn //F2在這裡下斷點,然後返回。 指令行下 d 12ffa0 0012FFA0 89 6E B4 00 38 DD 12 00 塶?8?. 0012FFA8 88 2C 4A 00 F0 FF 12 00 ?J.?. 0012FFA0 89 //在這裡下硬體寫入斷點Dword斷點,F9執行。 00B451F1 5D pop ebp //中斷在這裡。 00B451F2 81ED E67F4900 sub ebp, 497FE6 00B451F8 8D8D D47F4900 lea ecx, dword ptr ss:[ebp+497FD4] 00B451FE 2BC1 sub eax, ecx 00B45200 8985 D07F4900 mov dword ptr ss:[ebp+497FD0], eax 00B45206 8D85 BE7F4900 lea eax, dword ptr ss:[ebp+497FBE] 00B4520C 8D8D 27804900 lea ecx, dword ptr ss:[ebp+498027] 00B45212 03CB add ecx, ebx 00B45214 8941 01 mov dword ptr ds:[ecx+1], eax 00B45217 8D85 D47F4900 lea eax, dword ptr ss:[ebp+497FD4] 00B4521D 8D8D C27F4900 lea ecx, dword ptr ss:[ebp+497FC2] 00B45223 8901 mov dword ptr ds:[ecx], eax 00B45225 B8 53010000 mov eax, 153 00B4522A 8D8D C77F4900 lea ecx, dword ptr ss:[ebp+497FC7] 00B45230 8901 mov dword ptr ds:[ecx], eax 00B45232 55 push ebp //Stolen Code開始字元。 00B45233 8BEC mov ebp, esp 00B45235 6A FF push -1 00B45237 68 50124800 push 481250 00B4523C 68 58D34400 push 44D358 00B45241 64:A1 00000000 mov eax, dword ptr fs:[0] 00B45247 50 push eax 00B45248 64:8925 0000000>mov dword ptr fs:[0], esp 00B4524F 83EC 58 sub esp, 58 00B45252 53 push ebx 00B45253 56 push esi 00B45254 57 push edi 00B45255 8965 E8 mov dword ptr ss:[ebp-18], esp //Stolen Code結束。 00B45258 68 90909090 push 90909090 00B4525D C3 retn 非常快吧! Btw:這個程序下12ffa0硬體寫入斷點可以找到Stolen Code,有些程序是下12ffc0硬體寫入斷點可以找到Stolen Code,經測試C++,dephi,都有效。 本人用大量時間和篇幅完成本文,謹以本文獻給困惑中的脫友,感謝Dfcg中眾兄弟技術支持。 -------------------------------------------------------------------------------- 【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!! |
送花文章: 3,
|
|
|
相似的主題 | ||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
貓和老鼠」的較量 軟體破解大揭密 | psac | Hacker/Cracker 及加解密技術文件 | 2 | 2004-05-23 06:51 PM |