史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   多媒體影音轉檔燒錄技術文件 (http://forum.slime.com.tw/f129.html)
-   -   AVI/MPEG/RM Joiner4.11脫殼+破解 (http://forum.slime.com.tw/thread94334.html)

psac 2004-02-09 02:45 AM

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 66:D3CE 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中眾兄弟技術支持。


--------------------------------------------------------------------------------


【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!!


所有時間均為台北時間。現在的時間是 09:26 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1