|
| 破文作者:fxyang 准备工作:--必须有完成了代码和iat表修复后的dump文件 使用工具:--修改后的OD 等试验对象:Easy CD-DA Extractor 下载地址:http://www.hanzify.org/?Go=Show::List&ID=7377,试验中使用machenglin提供的dump文件
让我们开始:
1.获得修复CC环境
已知主程序ezcddax.exe是Armadillo壳,且使用了CC保护方式。OD加载主程序ezcddax.exe 在Command窗口中:bp GetThreadContext 运行。
第一次中断后,F9继续,被中断在函数GetThreadContext中:
7C838EEB > 8BFF MOV EDI, EDI
7C838EED 55 PUSH EBP
7C838EEE 8BEC MOV EBP, ESP
7C838EF0 FF75 0C PUSH DWORD PTR SS:[EBP+C]
7C838EF3 FF75 08 PUSH DWORD PTR SS:[EBP+8]
7C838EF6 FF15 F814807C CALL DWORD PTR DS:[<&ntdll.NtGetConte>; ntdll.ZwGetContextThread
7C838EFC 85C0 TEST EAX, EAX
7C838EFE 0F8C 57B60000 JL kernel32.7C84455B
7C838F04 33C0 XOR EAX, EAX
7C838F06 40 INC EAX
7C838F07 5D POP EBP
7C838F08 C2 0800 RETN 8
Alt+F9到:
00805E47 . 50 PUSH EAX
00805E48 . F7D0 NOT EAX
00805E4A . 0FC8 BSWAP EAX
00805E4C . 58 POP EAX
00805E4D . 73 00 JNB SHORT ezcddax.00805E4F
00805E4F > 9C PUSHFD
00805E50 . 60 PUSHAD
00805E51 . EB 2B JMP SHORT ezcddax.00805E7E
在OD中删除分析,还原壳的代码,分析这段处理CC的代码。
请参考:http://bbs.pediy.com//showthread ... 0&threadid=6991
这里就不再分析了:
00805E26 83C4 0C ADD ESP, 0C
00805E29 C785 7CEBFFFF 0>MOV DWORD PTR SS:[EBP-1484], 10001
00805E33 8D85 7CEBFFFF LEA EAX, DWORD PTR SS:[EBP-1484]
00805E39 50 PUSH EAX
00805E3A 8B8D 50EEFFFF MOV ECX, DWORD PTR SS:[EBP-11B0]
00805E40 51 PUSH ECX
00805E41 FF15 E0808300 CALL DWORD PTR DS:[<&KERNEL32.GetThre>; kernel32.GetThreadContext
00805E47 50 PUSH EAX
00805E48 F7D0 NOT EAX
00805E4A 0FC8 BSWAP EAX
{处理代码}
00806201 66:92 XCHG AX, DX
00806203 8BC0 MOV EAX, EAX
00806205 8D95 7CEBFFFF LEA EDX, DWORD PTR SS:[EBP-1484]
0080620B 52 PUSH EDX
0080620C 8B85 50EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B0]
00806212 50 PUSH EAX
00806213 FF15 DC808300 CALL DWORD PTR DS:[<&KERNEL32.SetThre>; kernel32.SetThreadContext
00806219 60 PUSHAD
0080621A 33C0 XOR EAX, EAX
0080621C 75 02 JNZ SHORT ezcddax.00806220
0080621E EB 15 JMP SHORT ezcddax.00806235
00806220 EB 33 JMP SHORT ezcddax.00806255
2.通过这段代码,大概查找CC的范围
通过分析知道:
00805EC3 8B95 34ECFFFF MOV EDX, DWORD PTR SS:[EBP-13CC]
00805EC9 52 PUSH EDX
00805ECA 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
这段代码中的:
00805EC3 8B95 34ECFFFF MOV EDX, DWORD PTR SS:[EBP-13CC]
是把Context域的CC发生时的下一字节地址传送的EDX中,在
00805E9F 52 PUSH EDX
设置[条件记录断点]
表达式:[EDX]
暂停程序:从不
记录表达式数据:永远
设置[记录]到文件,输入文件名保存,取消断点GetThreadContext 。
设置好后运行程序,最好运行程序的所有功能,关闭OD得到一个CC地址表:
00805E9F COND: 00439891
7C838EEB 断点位于 kernel32.GetThreadContext
00805E9F COND: 0043989E
00805E9F COND: 00439962
00805E9F COND: 00439989
00805E9F COND: 004399A3
00805E9F COND: 004399AD
00805E9F COND: 00439B5A
00805E9F COND: 00439B84
00805E9F COND: 00439B92
00805E9F COND: 00439C2D
00805E9F COND: 00439B9C
00805E9F COND: 00439BA4
00805E9F COND: 00439BE2
00805E9F COND: 00439C2D
00805E9F COND: 00439B9C
00805E9F COND: 00439BA4
00805E9F COND: 00439BE2
00805E9F COND: 00439C2D
00805E9F COND: 00439C52
00805E9F COND: 0046C5D4
00805E9F COND: 0046C604
00805E9F COND: 0046C786
00805E9F COND: 0046C82B
00805E9F COND: 004E3251
00805E9F COND: 004E3262
00805E9F COND: 004E3280
00805E9F COND: 004E32B1
00805E9F COND: 004E33D1
00805E9F COND: 004E34F1
00805E9F COND: 004E35A7
00805E9F COND: 0046DB82
00805E9F COND: 0046DBC7
00805E9F COND: 0046DC19
00400000 卸载 C:\Program Files\Easy CD-DA Extractor 9\ezcddax.exe
操作完成
由于只是演示方法,所以这个表可能不完整。
从上面的记录中可以看到CC的大概范围,用OD打开dump下的文件,到内存窗口中把text段的二进制代码保存到一个文件code.txt中待用。
3.查找CC地址
OD重新加载主程序,bp GetThreadContext 运行,第二次依然来得:
00805E26 83C4 0C ADD ESP, 0C
00805E29 C785 7CEBFFFF 0>MOV DWORD PTR SS:[EBP-1484], 10001
00805E33 8D85 7CEBFFFF LEA EAX, DWORD PTR SS:[EBP-1484]
00805E39 50 PUSH EAX
00805E3A 8B8D 50EEFFFF MOV ECX, DWORD PTR SS:[EBP-11B0]
00805E40 51 PUSH ECX
00805E41 FF15 E0808300 CALL DWORD PTR DS:[<&KERNEL32.GetThre>; kernel32.GetThreadContext
00805E47 50 PUSH EAX //停在这里
到OD的内存窗口中,选择text段 双击打开text段:
00401000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00401010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
打开保存的code.txt文件把二进制代码复制到text段的内存中,在壳的段中找一段暂时不用的地址,存放获得的CC地址,如:
00828000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
记下现在的寄存器:
EAX 00000001
ECX 0012DC78
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDE000
ESP 0012DC98
EBP 0012F79C
ESI 00000017
EDI 0012E2EC
EIP 00805E47 ezcddax.00805E47
C 0 ES 0023 32位 0(FFFFFFFF)
P 0 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 0 DS 0023 32位 0(FFFFFFFF)
S 0 FS 003B 32位 7FFDD000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SEM_TIMEOUT (00000079)
EFL 00000202 (NO,NB,NE,A,NS,PO,GE,G)
ST0 empty -UNORM D1D8 01050104 00000000
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty 0.0
3 2 1 0 E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
写段代码,查找CC地址:
007D8000 9C PUSHFD
007D8001 60 PUSHAD
007D8002 B8 00984300 MOV EAX, ezcddax.00439800
007D8007 BB 00808200 MOV EBX, ezcddax.00828000
007D800C 8038 CC CMP BYTE PTR DS:[EAX], 0CC
007D800F 74 0C JE SHORT ezcddax.007D801D
007D8011 83C0 01 ADD EAX, 1
007D8014 3D 00004700 CMP EAX, ezcddax.00470000
007D8019 74 11 JE SHORT ezcddax.007D802C
007D801B ^ EB EF JMP SHORT ezcddax.007D800C
007D801D 8D40 01 LEA EAX, DWORD PTR DS:[EAX+1]
007D8020 8903 MOV DWORD PTR DS:[EBX], EAX
007D8022 83C0 01 ADD EAX, 1
007D8025 83C3 04 ADD EBX, 4
007D8028 ^ EB E5 JMP SHORT ezcddax.007D800F
007D802A 90 NOP
007D802B 90 NOP
007D802C 61 POPAD
007D802D 9D POPFD
007D802E 90 NOP
二进制代码:
9C 60 B8 00 98 43 00 BB 00 80 82 00 80 38 CC 74 0C 83 C0 01 3D 00 00 47 00 74 11 EB EF 8D 40 01
89 03 83 C0 01 83 C3 04 EB E5 90 90 61 9D 90
在007D8000 新建EIP,007D802E 下中断,运行这段代码,在地址00828000处得到一张CC地址表:
00828000 91 98 43 00 9E 98 43 00 62 99 43 00 73 99 43 00 憳C.灅C.b機.s機.
00828010 89 99 43 00 A3 99 43 00 A7 99 43 00 AD 99 43 00 墮C.C.C.瓩C.
00828020 5A 9B 43 00 84 9B 43 00 92 9B 43 00 9C 9B 43 00 Z汣.剾C.挍C.湜C.
00828030 A4 9B 43 00 E2 9B 43 00 F7 9B 43 00 FB 9B 43 00 C.鉀C.鳑C.麤C.
00828040 2D 9C 43 00 52 9C 43 00 BC 9D 43 00 87 9F 43 00 -淐.R淐.紳C.嚐C.
00828050 F2 A0 43 00 14 A1 43 00 A6 A3 43 00 D2 A4 43 00 驙C..ΓC.窑C.
00828060 E3 A4 43 00 11 A5 43 00 D9 A5 43 00 CC A9 43 00 悚C..佶C.泰C.
00828070 37 AA 43 00 74 AA 43 00 87 AA 43 00 8F AA 43 00 7狢.t狢.嚜C.彧C.
00828080 27 B4 43 00 45 B5 43 00 C5 B6 43 00 DA B6 43 00 '碈.E礐.哦C.诙C.
00828090 5A B7 43 00 C3 B7 43 00 CC B7 43 00 60 B8 43 00 Z稢.梅C.谭C.`窩.
008280A0 81 B8 43 00 EC B8 43 00 29 B9 43 00 3C B9 43 00 伕C.旄C.)笴.<笴.
008280B0 44 B9 43 00 B5 BD 43 00 8F C1 43 00 95 C1 43 00 D笴.到C.徚C.暳C.
008280C0 AF C1 43 00 3E C2 43 00 C6 CC 43 00 5F CD 43 00 C.>翪.铺C._虲.
008280D0 65 CD 43 00 77 CD 43 00 86 CD 43 00 F9 CF 43 00 e虲.w虲.喭C.C.
008280E0 FC CF 43 00 03 D0 43 00 B6 D2 43 00 BC D2 43 00 C.蠧.兑C.家C.
008280F0 56 D4 43 00 91 D4 43 00 97 D4 43 00 AA D4 43 00 V訡.懺C.椩C.C.
00828100 BD D4 43 00 D0 D4 43 00 E3 D4 43 00 F6 D4 43 00 皆C.性C.阍C.鲈C.
00828110 09 D5 43 00 1C D5 43 00 2F D5 43 00 42 D5 43 00 .誄.誄./誄.B誄.
00828120 55 D5 43 00 6D D5 43 00 A3 D6 43 00 05 DD 43 00 U誄.m誄.VC.軨.
00828130 BD E1 43 00 2A E6 43 00 45 E6 43 00 71 E8 43 00 结C.*鍯.E鍯.q鐲.
00828140 3C EE 43 00 6B EF 43 00 96 F8 43 00 19 F9 43 00 <頒.k顲.桒C.鵆.
00828150 37 FA 43 00 6D FA 43 00 A3 FA 43 00 D9 FA 43 00 7鶦.m鶦.zC.羸C.
00828160 0F FB 43 00 53 FB 43 00 DD FB 43 00 2E FC 43 00 鸆.S鸆.蓰C..麮.
00828170 AE 00 44 00 46 01 44 00 72 01 44 00 86 01 44 00 ?D.FD.rD.?D.
00828180 14 02 44 00 D0 02 44 00 FD 02 44 00 4F 03 44 00 D.?D.?D.OD.
00828190 89 03 44 00 B5 03 44 00 98 08 44 00 C0 08 44 00 ?D.?D.?D.?D.
008281A0 2A 09 44 00 9F 09 44 00 BC 0D 44 00 BF 0D 44 00 *.D.?D.?D.?D.
008281B0 D9 0D 44 00 46 0E 44 00 3B 11 44 00 7D 12 44 00 ?D.FD.;D.}D.
008281C0 1F 13 44 00 63 13 44 00 B5 16 44 00 AD 19 44 00 D.cD.?D.?D.
008281D0 D4 19 44 00 E5 19 44 00 04 1A 44 00 5E 20 44 00 ?D.?D.D.^ D.
008281E0 72 20 44 00 8C 20 44 00 9A 20 44 00 F8 20 44 00 r D.?D.?D.?D.
008281F0 FD 20 44 00 61 22 44 00 7D 22 44 00 95 22 44 00 ?D.a"D.}"D.?D.
00828200 AC 22 44 00 75 23 44 00 F9 23 44 00 FF 23 44 00 ?D.u#D.?D.#D.
00828210 8F 28 44 00 A5 28 44 00 BB 28 44 00 D1 28 44 00 ?D.?D.?D.?D.
00828220 37 2A 44 00 3D 2A 44 00 54 2A 44 00 B5 2A 44 00 7*D.=*D.T*D.?D.
00828230 D7 2A 44 00 0A 2D 44 00 D4 2D 44 00 23 2E 44 00 ?D..-D.?D.#.D.
00828240 0A 31 44 00 1C 31 44 00 BB 31 44 00 CB 31 44 00 .1D.1D.?D.?D.
00828250 DD 31 44 00 7C 32 44 00 E1 33 44 00 B5 34 44 00 ?D.|2D.?D.?D.
00828260 EC 36 44 00 61 37 44 00 54 39 44 00 15 3B 44 00 ?D.a7D.T9D.;D.
00828270 14 3E 44 00 4D 3E 44 00 CD 3E 44 00 D6 3F 44 00 >D.M>D.?D.?D.
00828280 62 41 44 00 9F 43 44 00 F5 43 44 00 6E 44 44 00 bAD.烠D.魿D.nDD.
00828290 EF 44 44 00 F2 44 44 00 57 45 44 00 5D 45 44 00 顳D.駾D.WED.]ED.
008282A0 73 45 44 00 87 45 44 00 AB 45 44 00 93 46 44 00 sED.嘐D.獷D.揊D.
008282B0 AD 47 44 00 72 48 44 00 75 48 44 00 5B 4F 44 00 璆D.rHD.uHD.[OD.
008282C0 5E 4F 44 00 9A 4F 44 00 3B 51 44 00 3E 51 44 00 ^OD.歄D.;QD.>QD.
008282D0 7A 51 44 00 3E 53 44 00 71 53 44 00 74 53 44 00 zQD.>SD.qSD.tSD.
008282E0 00 54 44 00 2A 54 44 00 3E 54 44 00 76 54 44 00 .TD.*TD.>TD.vTD.
008282F0 A9 54 44 00 AC 54 44 00 D1 54 44 00 3E 55 44 00 ㏕D.琓D.裈D.>UD.
00828300 68 55 44 00 7C 55 44 00 15 59 44 00 AF 59 44 00 hUD.|UD.YD.痀D.
00828310 BA 59 44 00 47 5A 44 00 0C 67 44 00 0F 67 44 00 篩D.GZD..gD.gD.
00828320 32 67 44 00 5E 67 44 00 39 6A 44 00 C9 6A 44 00 2gD.^gD.9jD.蒵D.
00828330 D9 6A 44 00 1E 6B 44 00 33 6C 44 00 5B 6C 44 00 賘D.kD.3lD.[lD.
00828340 69 6C 44 00 89 6D 44 00 8E 6D 44 00 AA 6D 44 00 ilD.塵D.巑D.猰D.
00828350 29 71 44 00 4A 71 44 00 0A 7C 44 00 15 7C 44 00 )qD.JqD..|D.|D.
00828360 23 7C 44 00 36 7F 44 00 5E 7F 44 00 61 7F 44 00 #|D.6D.^D.aD.
00828370 CE 7F 44 00 F3 7F 44 00 07 80 44 00 40 81 44 00 ?D.?D.€D.@丏.
00828380 43 81 44 00 53 81 44 00 1B 82 44 00 39 82 44 00 C丏.S丏.侱.9侱.
00828390 33 83 44 00 47 83 44 00 D5 85 44 00 E5 85 44 00 3僁.G僁.諈D.鍏D.
008283A0 1E 8B 44 00 29 8B 44 00 6A 8B 44 00 E8 91 44 00 婦.)婦.j婦.钁D.
008283B0 77 95 44 00 85 95 44 00 97 95 44 00 B5 A1 44 00 w旸.厱D.棔D.怠D.
008283C0 85 BA 44 00 D6 BA 44 00 12 BB 44 00 33 BB 44 00 吅D.趾D.籇.3籇.
008283D0 DF BD 44 00 0D C3 44 00 F2 C4 44 00 FB C4 44 00 呓D..肈.蚰D.D.
008283E0 06 C5 44 00 17 C5 44 00 28 C5 44 00 39 C5 44 00 臘.臘.(臘.9臘.
008283F0 4A C5 44 00 5B C5 44 00 64 C5 44 00 6C C5 44 00 J臘.[臘.d臘.l臘.
00828400 7D C5 44 00 8E C5 44 00 9F C5 44 00 B0 C5 44 00 }臘.幣D.熍D.芭D.
00828410 C1 C5 44 00 CD C5 44 00 D9 C5 44 00 E5 C5 44 00 僚D.团D.倥D.迮D.
00828420 F1 C5 44 00 FD C5 44 00 09 C6 44 00 3D C9 44 00 衽D.D..艱.=蒁.
00828430 B5 CA 44 00 08 CD 44 00 0E CD 44 00 1F CD 44 00 凳D.虳.虳.虳.
00828440 3B CD 44 00 D8 D7 44 00 DF D7 44 00 D5 DF 44 00 ;虳.刈D.咦D.者D.
00828450 50 E6 44 00 05 EB 44 00 65 EB 44 00 7E EC 44 00 P鍰.隓.e隓.~霥.
00828460 78 EF 44 00 CD F5 44 00 68 F6 44 00 40 FC 44 00 x顳.王D.h鯠.@麯.
00828470 43 FC 44 00 4E FC 44 00 5A FC 44 00 66 FC 44 00 C麯.N麯.Z麯.f麯.
00828480 DF 04 45 00 05 05 45 00 2D 05 45 00 42 05 45 00 ?E.E.-E.BE.
00828490 8B 05 45 00 C2 05 45 00 80 0A 45 00 DF 0A 45 00 ?E.?E.€.E.?E.
008284A0 FB 15 45 00 FE 15 45 00 07 16 45 00 7E 16 45 00 ?E.?E.E.~E.
008284B0 91 16 45 00 C0 16 45 00 CA 16 45 00 F3 16 45 00 ?E.?E.?E.?E.
008284C0 40 17 45 00 6A 17 45 00 D8 17 45 00 E1 17 45 00 @E.jE.?E.?E.
008284D0 EA 17 45 00 F4 17 45 00 FC 17 45 00 B3 18 45 00 ?E.?E.?E.?E.
008284E0 58 1A 45 00 AE 1A 45 00 64 1F 45 00 C3 1F 45 00 XE.?E.dE.?E.
008284F0 BA 20 45 00 E1 22 45 00 AE 24 45 00 BB 24 45 00 ?E.?E.?E.?E.
00828500 C1 24 45 00 D7 24 45 00 DF 25 45 00 F5 25 45 00 ?E.?E.?E.?E.
00828510 55 26 45 00 69 26 45 00 72 26 45 00 76 26 45 00 U&E.i&E.r&E.v&E.
00828520 81 26 45 00 8B 26 45 00 93 26 45 00 55 27 45 00 ?E.?E.?E.U'E.
00828530 99 28 45 00 2F 29 45 00 97 2B 45 00 C7 2B 45 00 ?E./)E.?E.?E.
00828540 28 2C 45 00 84 30 45 00 DE 30 45 00 57 32 45 00 (,E.?E.?E.W2E.
00828550 5B 33 45 00 D8 33 45 00 DD 33 45 00 2A 34 45 00 [3E.?E.?E.*4E.
00828560 5C 37 45 00 BA 37 45 00 94 42 45 00 B0 42 45 00 \7E.?E.擝E.癇E.
00828570 D0 42 45 00 00 43 45 00 93 45 45 00 EC 45 45 00 蠦E..CE.揈E.霦E.
00828580 FA 45 45 00 24 54 45 00 32 54 45 00 90 54 45 00 鶨E.$TE.2TE.怲E.
00828590 FB 56 45 00 0D 57 45 00 27 5D 45 00 ED 62 45 00 鸙E..WE.']E.韇E.
008285A0 51 70 45 00 C9 71 45 00 0D 77 45 00 22 78 45 00 QpE.蓂E..wE."xE.
008285B0 33 78 45 00 9A 78 45 00 FD 7C 45 00 19 82 45 00 3xE.歺E.齶E.侲.
008285C0 1F 82 45 00 AA 84 45 00 3A 85 45 00 C3 87 45 00 侲.獎E.:匛.脟E.
008285D0 4C 8D 45 00 68 8D 45 00 1D 92 45 00 71 93 45 00 L岴.h岴.扙.q揈.
008285E0 8C 93 45 00 B9 93 45 00 CA 93 45 00 05 94 45 00 寭E.箵E.蕮E.擡.
008285F0 0D 94 45 00 13 94 45 00 1A 94 45 00 22 94 45 00 .擡.擡.擡."擡.
00828600 58 94 45 00 C4 94 45 00 53 95 45 00 76 95 45 00 X擡.臄E.S旹.v旹.
00828610 96 95 45 00 B9 95 45 00 D9 95 45 00 DF 95 45 00 枙E.箷E.贂E.邥E.
00828620 FB 95 45 00 14 96 45 00 31 96 45 00 4A 96 45 00 麜E.朎.1朎.J朎.
00828630 67 96 45 00 7C 96 45 00 8F 96 45 00 95 96 45 00 g朎.|朎.彇E.晼E.
00828640 B1 96 45 00 C6 96 45 00 D9 96 45 00 DF 96 45 00 睎E.茤E.贃E.邧E.
00828650 FB 96 45 00 10 97 45 00 23 97 45 00 FD 97 45 00 麞E.桬.#桬.龡E.
00828660 19 98 45 00 65 98 45 00 75 98 45 00 87 98 45 00 楨.e楨.u楨.嚇E.
00828670 95 98 45 00 A3 98 45 00 B1 98 45 00 BF 98 45 00 晿E.E.睒E.繕E.
00828680 CD 98 45 00 DB 98 45 00 E9 98 45 00 F7 98 45 00 蜆E.蹣E.闃E.鳂E.
00828690 31 9A 45 00 3D 9A 45 00 4C 9A 45 00 56 9A 45 00 1欵.=欵.L欵.V欵.
008286A0 67 9A 45 00 73 9A 45 00 84 9A 45 00 90 9A 45 00 g欵.s欵.剼E.悮E.
008286B0 A1 9A 45 00 AD 9A 45 00 BE 9A 45 00 CA 9A 45 00 E.瓪E.練E.蕷E.
008286C0 DB 9A 45 00 E7 9A 45 00 F5 9A 45 00 01 9B 45 00 蹥E.鐨E.鯕E.汦.
008286D0 0F 9B 45 00 1B 9B 45 00 29 9B 45 00 35 9B 45 00 汦.汦.)汦.5汦.
008286E0 43 9B 45 00 14 9D 45 00 84 9D 45 00 A5 9E 45 00 C汦.滶.劃E.E.
008286F0 B2 9E 45 00 F4 9E 45 00 FE 9E 45 00 94 9F 45 00 矠E.魹E.E.敓E.
00828700 09 A0 45 00 B5 A0 45 00 D3 A0 45 00 EE A0 45 00 .燛.禒E.訝E.顮E.
00828710 30 A2 45 00 3D A2 45 00 17 A3 45 00 1D A3 45 00 0.=...
00828720 6A A3 45 00 72 A3 45 00 8D A3 45 00 95 A3 45 00 j.r.崳E.暎E.
00828730 9F A3 45 00 A5 A3 45 00 A9 A3 45 00 AD A3 45 00 煟E.ィE.E.E.
00828740 52 A4 45 00 AB A4 45 00 45 A5 45 00 48 A5 45 00 R.E.E.H.
00828750 50 A5 45 00 65 A5 45 00 E3 A7 45 00 6D A9 45 00 P.e.悃E.m〦.
00828760 7E A9 45 00 9E A9 45 00 C8 A9 45 00 23 AA 45 00 ~〦.灘E.醛E.#狤.
00828770 43 AA 45 00 65 AB 45 00 D2 AB 45 00 E5 AB 45 00 C狤.e獷.耀E.瀚E.
00828780 83 AC 45 00 E1 AC 45 00 5E AD 45 00 8F AD 45 00 儸E.岈E.^璄.彮E.
00828790 AC AD 45 00 B6 AD 45 00 CA AD 45 00 D6 AD 45 00 E.董E.虱E.汁E.
008287A0 E2 AD 45 00 EE AD 45 00 02 AE 45 00 16 AE 45 00 猸E.瞽E.瓻.瓻.
008287B0 69 AF 45 00 75 AF 45 00 81 AF 45 00 57 B2 45 00 i疎.u疎.伅E.W睧.
008287C0 98 B4 45 00 77 B6 45 00 DA B7 45 00 DB BC 45 00 槾E.w禘.诜E.奂E.
008287D0 ED BC 45 00 00 BF 45 00 03 BF 45 00 0F BF 45 00 砑E..縀.縀.縀.
008287E0 A1 BF 45 00 FD BF 45 00 C3 C0 45 00 DC C0 45 00 】E.E.美E.芾E.
008287F0 EE C0 45 00 13 C1 45 00 25 C1 45 00 4A C1 45 00 罾E.罞.%罞.J罞.
00828800 5C C1 45 00 81 C1 45 00 93 C1 45 00 A5 C1 45 00 \罞.伭E.摿E.チE.
00828810 B8 C2 45 00 D1 C2 45 00 F3 C2 45 00 28 C3 45 00 嘎E.崖E.舐E.(肊.
00828820 4A C3 45 00 7F C3 45 00 A1 C3 45 00 D6 C3 45 00 J肊.肊.∶E.置E.
00828830 F8 C3 45 00 1A C4 45 00 D8 C6 45 00 F6 C6 45 00 E.腅.仄E.銎E.
00828840 8D C7 45 00 D7 C7 45 00 18 C8 45 00 26 C8 45 00 嵡E.浊E.菶.&菶.
00828850 70 C8 45 00 9E C8 45 00 A1 C8 45 00 A4 C8 45 00 p菶.炄E.∪E.とE.
00828860 B1 C8 45 00 B7 C8 45 00 A5 C9 45 00 B5 C9 45 00 比E.啡E.ドE.瞪E.
00828870 0C CB 45 00 3D CB 45 00 75 CB 45 00 0B CD 45 00 .薊.=薊.u薊. 虴.
00828880 31 CD 45 00 39 D8 45 00 0A DD 45 00 0D DD 45 00 1虴.9谽..軪..軪.
00828890 C5 DD 45 00 5E DE 45 00 A3 DE 45 00 F1 DE 45 00 泡E.^轊.^E.褶E.
008288A0 F5 DE 45 00 06 E1 45 00 2C E1 45 00 0E E9 45 00 蹀E.酔.,酔.镋.
008288B0 7F F5 45 00 C6 F5 45 00 87 F6 45 00 A2 F6 45 00 鮁.契E.圅E.ⅥE.
008288C0 00 FB 45 00 9E FB 45 00 A1 FB 45 00 CC FB 45 00 .鸈.烕E.←E.帖E.
008288D0 4F FC 45 00 C3 FC 45 00 12 FD 45 00 D5 FF 45 00 O麰.命E.鼸.?E.
008288E0 3E 00 46 00 FA 01 46 00 15 02 46 00 31 02 46 00 >.F.?F.F.1F.
008288F0 4D 02 46 00 14 04 46 00 52 04 46 00 FE 04 46 00 MF.F.RF.?F.
00828900 20 0F 46 00 ED 12 46 00 8E 14 46 00 2D 18 46 00 F.?F.?F.-F.
00828910 61 1C 46 00 3E 23 46 00 7F 23 46 00 09 24 46 00 aF.>#F.#F..$F.
00828920 13 24 46 00 1D 24 46 00 4F 24 46 00 59 24 46 00 $F.$F.O$F.Y$F.
00828930 7D 24 46 00 8D 24 46 00 99 24 46 00 A3 24 46 00 }$F.?F.?F.?F.
00828940 AD 24 46 00 DF 24 46 00 E9 24 46 00 10 25 46 00 ?F.?F.?F.%F.
00828950 20 25 46 00 2C 25 46 00 36 25 46 00 40 25 46 00 %F.,%F.6%F.@%F.
00828960 72 25 46 00 7C 25 46 00 A3 25 46 00 B3 25 46 00 r%F.|%F.?F.?F.
00828970 BF 25 46 00 C9 25 46 00 D3 25 46 00 05 26 46 00 ?F.?F.?F.&F.
00828980 0F 26 46 00 36 26 46 00 46 26 46 00 52 26 46 00 &F.6&F.F&F.R&F.
00828990 5C 26 46 00 66 26 46 00 98 26 46 00 A2 26 46 00 \&F.f&F.?F.?F.
008289A0 C9 26 46 00 D9 26 46 00 EB 26 46 00 F5 26 46 00 ?F.?F.?F.?F.
008289B0 03 27 46 00 38 27 46 00 42 27 46 00 6F 27 46 00 'F.8'F.B'F.o'F.
008289C0 7F 27 46 00 91 27 46 00 9B 27 46 00 A9 27 46 00 'F.?F.?F.?F.
008289D0 DE 27 46 00 E8 27 46 00 15 28 46 00 25 28 46 00 ?F.?F.(F.%(F.
008289E0 37 28 46 00 41 28 46 00 4F 28 46 00 84 28 46 00 7(F.A(F.O(F.?F.
008289F0 8E 28 46 00 BB 28 46 00 CB 28 46 00 DD 28 46 00 ?F.?F.?F.?F.
00828A00 E7 28 46 00 F5 28 46 00 2A 29 46 00 34 29 46 00 ?F.?F.*)F.4)F.
00828A10 61 29 46 00 71 29 46 00 83 29 46 00 8D 29 46 00 a)F.q)F.?F.?F.
00828A20 9B 29 46 00 D0 29 46 00 DA 29 46 00 07 2A 46 00 ?F.?F.?F.*F.
00828A30 17 2A 46 00 29 2A 46 00 33 2A 46 00 41 2A 46 00 *F.)*F.3*F.A*F.
00828A40 76 2A 46 00 80 2A 46 00 AD 2A 46 00 BD 2A 46 00 v*F.€*F.?F.?F.
00828A50 CF 2A 46 00 D9 2A 46 00 E7 2A 46 00 1C 2B 46 00 ?F.?F.?F.+F.
00828A60 26 2B 46 00 53 2B 46 00 63 2B 46 00 75 2B 46 00 &+F.S+F.c+F.u+F.
00828A70 7F 2B 46 00 8D 2B 46 00 C2 2B 46 00 CC 2B 46 00 +F.?F.?F.?F.
00828A80 F9 2B 46 00 09 2C 46 00 F2 2C 46 00 F8 2C 46 00 ?F..,F.?F.?F.
00828A90 11 2D 46 00 9A 33 46 00 AD 33 46 00 39 41 46 00 -F.?F.?F.9AF.
00828AA0 6B 41 46 00 8C 41 46 00 B0 41 46 00 FD 41 46 00 kAF.孉F.癆F.鼳F.
00828AB0 87 42 46 00 A2 42 46 00 98 43 46 00 BA 43 46 00 嘊F.F.楥F.篊F.
00828AC0 E9 43 46 00 48 44 46 00 E5 44 46 00 07 46 46 00 镃F.HDF.錎F.FF.
00828AD0 2D 46 46 00 50 46 46 00 74 46 46 00 0A 47 46 00 -FF.PFF.tFF..GF.
00828AE0 15 47 46 00 1B 47 46 00 3A 47 46 00 3D 47 46 00 GF.GF.:GF.=GF.
00828AF0 68 47 46 00 FD 51 46 00 F1 67 46 00 D2 76 46 00 hGF.齉F.駁F.襳F.
00828B00 9D 78 46 00 D8 79 46 00 EA 7B 46 00 4F 7D 46 00 漻F.貀F.陒F.O}F.
00828B10 52 7D 46 00 5D 7D 46 00 66 7D 46 00 8F 7D 46 00 R}F.]}F.f}F.弣F.
00828B20 A3 7D 46 00 B4 7D 46 00 65 7E 46 00 A5 7E 46 00 F.磢F.e~F.F.
00828B30 B5 7E 46 00 FE 7E 46 00 0D 80 46 00 0D 81 46 00 祣F.F..€F..丗.
00828B40 7D 81 46 00 51 82 46 00 1D 83 46 00 4B 83 46 00 }丗.Q侳.僃.K僃.
00828B50 74 84 46 00 9A 84 46 00 86 85 46 00 C1 85 46 00 t凢.殑F.唴F.羺F.
00828B60 54 86 46 00 82 86 46 00 D2 87 46 00 F5 87 46 00 T咶.倖F.覈F.鯂F.
00828B70 DD 88 46 00 A1 89 46 00 D1 89 46 00 D6 89 46 00 輬F.F.褖F.謮F.
00828B80 9A 8A 46 00 BE 8A 46 00 E2 8B 46 00 BE 8C 46 00 殜F.緤F.鈰F.緦F.
00828B90 EE 8C 46 00 E2 8D 46 00 CF 91 46 00 E4 91 46 00 顚F.鈲F.蠎F.鋺F.
00828BA0 14 92 46 00 1E 92 46 00 27 92 46 00 38 92 46 00 扚.扚.'扚.8扚.
00828BB0 41 92 46 00 26 93 46 00 29 93 46 00 F6 93 46 00 A扚.&揊.)揊.鰮F.
00828BC0 F9 93 46 00 C4 97 46 00 44 98 46 00 5F 98 46 00 鶕F.臈F.D楩._楩.
00828BD0 68 98 46 00 8E 98 46 00 EA 98 46 00 00 99 46 00 h楩.帢F.陿F..橣.
00828BE0 19 9C 46 00 27 9C 46 00 3F 9C 46 00 6B 9D 46 00 淔.'淔.?淔.k滷.
00828BF0 77 9D 46 00 99 9D 46 00 A5 9D 46 00 04 9E 46 00 w滷.櫇F.F.濬.
00828C00 0E 9E 46 00 14 9E 46 00 C8 9E 46 00 10 9F 46 00 濬.濬.葹F.烣.
00828C10 3C 9F 46 00 5D 9F 46 00 0A A4 46 00 A4 A4 46 00 <烣.]烣...いF.
00828C20 03 A5 46 00 E7 AB 46 00 03 AC 46 00 CC AC 46 00 .绔F.現.态F.
00828C30 94 AD 46 00 AF AD 46 00 78 AE 46 00 03 B0 46 00 敪F.F.x瓼.癋.
00828C40 D3 B0 46 00 12 B1 46 00 18 B1 46 00 29 B1 46 00 影F.盕.盕.)盕.
00828C50 77 B1 46 00 3A B3 46 00 2A B8 46 00 4A B8 46 00 w盕.:矲.*窮.J窮.
00828C60 90 B8 46 00 9E B8 46 00 0B B9 46 00 3A B9 46 00 惛F.灨F. 笷.:笷.
00828C70 44 B9 46 00 6D B9 46 00 8F B9 46 00 3C BA 46 00 D笷.m笷.徆F.<篎.
00828C80 4A BA 46 00 A4 BA 46 00 12 BC 46 00 15 BC 46 00 J篎.ずF.糉.糉.
00828C90 18 BC 46 00 AE BC 46 00 B1 BC 46 00 B4 BC 46 00 糉.F.奔F.醇F.
00828CA0 07 BD 46 00 29 BD 46 00 C6 BD 46 00 97 C3 46 00 紽.)紽.平F.椕F.
00828CB0 B5 C3 46 00 C6 C5 46 00 D4 C5 46 00 04 C6 46 00 得F.婆F.耘F.艶.
00828CC0 11 C6 46 00 23 C6 46 00 A5 C6 46 00 86 C7 46 00 艶.#艶.テF.喦F.
00828CD0 C8 C7 46 00 2B C8 46 00 32 CB 46 00 80 CC 46 00 惹F.+菷.2薋.€蘁.
00828CE0 DE CC 46 00 85 D7 46 00 8B D7 46 00 B2 D7 46 00 尢F.呑F.嬜F.沧F.
00828CF0 CE D7 46 00 9A D9 46 00 2E DB 46 00 82 DB 46 00 巫F.氋F..跢.傐F.
00828D00 C7 DB 46 00 15 DC 46 00 19 DC 46 00 2D DC 46 00 芹F.蹻.蹻.-蹻.
00828D10 7D DC 46 00 B1 DC 46 00 08 DF 46 00 40 E0 46 00 }蹻.避F.逨.@郌.
00828D20 90 E1 46 00 EC E2 46 00 24 E4 46 00 74 E5 46 00 愥F.焘F.$銯.t錐.
00828D30 86 E7 46 00 89 E7 46 00 D2 E7 46 00 AD E8 46 00 嗙F.夌F.溢F.F.
00828D40 D0 E8 46 00 D8 E8 46 00 EE E8 46 00 03 E9 46 00 需F.罔F.铊F.镕.
00828D50 20 E9 46 00 1D EA 46 00 40 EA 46 00 48 EA 46 00 镕.闒.@闒.H闒.
00828D60 5E EA 46 00 73 EA 46 00 90 EA 46 00 DC EA 46 00 ^闒.s闒.愱F.荜F.
00828D70 FA EA 46 00 91 EB 46 00 DB EB 46 00 1C EC 46 00 F.戨F.垭F.霧.
00828D80 2A EC 46 00 74 EC 46 00 A2 EC 46 00 A5 EC 46 00 *霧.t霧.㈧F.レF.
00828D90 A8 EC 46 00 B8 EC 46 00 D6 EC 46 00 6D ED 46 00 F.胳F.朱F.m鞦.
00828DA0 B7 ED 46 00 F8 ED 46 00 06 EE 46 00 50 EE 46 00 讽F.F.頕.P頕.
00828DB0 7E EE 46 00 81 EE 46 00 84 EE 46 00 DC EE 46 00 ~頕.侇F.勵F.茴F.
00828DC0 EA EE 46 00 1D EF 46 00 4D EF 46 00 7F F1 46 00 觐F.颋.M颋.馞.
00828DD0 89 F1 46 00 B7 F1 46 00 D8 F1 46 00 CC F2 46 00 夞F.否F.伛F.舔F.
00828DE0 DD F2 46 00 15 F3 46 00 45 F6 46 00 48 F6 46 00 蒡F.驠.E鯢.H鯢.
00828DF0 6B F6 46 00 AC F6 46 00 84 F7 46 00 A5 F7 46 00 k鯢.F.匃F.F.
00828E00 B3 F7 46 00 0B F8 46 00 3F F8 46 00 7A F8 46 00 橱F. 鳩.?鳩.z鳩.
00828E10 C4 FD 46 00 A1 FF 46 00 00 00 00 00 00 00 00 00 凝F.?F.........
91 98 43 00 9E 98 43 00 62 99 43 00 73 99 43 00 89 99 43 00 A3 99 43 00 A7 99 43 00 AD 99 43 00
5A 9B 43 00 84 9B 43 00 92 9B 43 00 9C 9B 43 00 A4 9B 43 00 E2 9B 43 00 F7 9B 43 00 FB 9B 43 00
2D 9C 43 00 52 9C 43 00 BC 9D 43 00 87 9F 43 00 F2 A0 43 00 14 A1 43 00 A6 A3 43 00 D2 A4 43 00
E3 A4 43 00 11 A5 43 00 D9 A5 43 00 CC A9 43 00 37 AA 43 00 74 AA 43 00 87 AA 43 00 8F AA 43 00
27 B4 43 00 45 B5 43 00 C5 B6 43 00 DA B6 43 00 5A B7 43 00 C3 B7 43 00 CC B7 43 00 60 B8 43 00
81 B8 43 00 EC B8 43 00 29 B9 43 00 3C B9 43 00 44 B9 43 00 B5 BD 43 00 8F C1 43 00 95 C1 43 00
AF C1 43 00 3E C2 43 00 C6 CC 43 00 5F CD 43 00 65 CD 43 00 77 CD 43 00 86 CD 43 00 F9 CF 43 00
FC CF 43 00 03 D0 43 00 B6 D2 43 00 BC D2 43 00 56 D4 43 00 91 D4 43 00 97 D4 43 00 AA D4 43 00
BD D4 43 00 D0 D4 43 00 E3 D4 43 00 F6 D4 43 00 09 D5 43 00 1C D5 43 00 2F D5 43 00 42 D5 43 00
55 D5 43 00 6D D5 43 00 A3 D6 43 00 05 DD 43 00 BD E1 43 00 2A E6 43 00 45 E6 43 00 71 E8 43 00
3C EE 43 00 6B EF 43 00 96 F8 43 00 19 F9 43 00 37 FA 43 00 6D FA 43 00 A3 FA 43 00 D9 FA 43 00
0F FB 43 00 53 FB 43 00 DD FB 43 00 2E FC 43 00 AE 00 44 00 46 01 44 00 72 01 44 00 86 01 44 00
14 02 44 00 D0 02 44 00 FD 02 44 00 4F 03 44 00 89 03 44 00 B5 03 44 00 98 08 44 00 C0 08 44 00
2A 09 44 00 9F 09 44 00 BC 0D 44 00 BF 0D 44 00 D9 0D 44 00 46 0E 44 00 3B 11 44 00 7D 12 44 00
1F 13 44 00 63 13 44 00 B5 16 44 00 AD 19 44 00 D4 19 44 00 E5 19 44 00 04 1A 44 00 5E 20 44 00
72 20 44 00 8C 20 44 00 9A 20 44 00 F8 20 44 00 FD 20 44 00 61 22 44 00 7D 22 44 00 95 22 44 00
AC 22 44 00 75 23 44 00 F9 23 44 00 FF 23 44 00 8F 28 44 00 A5 28 44 00 BB 28 44 00 D1 28 44 00
37 2A 44 00 3D 2A 44 00 54 2A 44 00 B5 2A 44 00 D7 2A 44 00 0A 2D 44 00 D4 2D 44 00 23 2E 44 00
0A 31 44 00 1C 31 44 00 BB 31 44 00 CB 31 44 00 DD 31 44 00 7C 32 44 00 E1 33 44 00 B5 34 44 00
EC 36 44 00 61 37 44 00 54 39 44 00 15 3B 44 00 14 3E 44 00 4D 3E 44 00 CD 3E 44 00 D6 3F 44 00
62 41 44 00 9F 43 44 00 F5 43 44 00 6E 44 44 00 EF 44 44 00 F2 44 44 00 57 45 44 00 5D 45 44 00
73 45 44 00 87 45 44 00 AB 45 44 00 93 46 44 00 AD 47 44 00 72 48 44 00 75 48 44 00 5B 4F 44 00
5E 4F 44 00 9A 4F 44 00 3B 51 44 00 3E 51 44 00 7A 51 44 00 3E 53 44 00 71 53 44 00 74 53 44 00
00 54 44 00 2A 54 44 00 3E 54 44 00 76 54 44 00 A9 54 44 00 AC 54 44 00 D1 54 44 00 3E 55 44 00
68 55 44 00 7C 55 44 00 15 59 44 00 AF 59 44 00 BA 59 44 00 47 5A 44 00 0C 67 44 00 0F 67 44 00
32 67 44 00 5E 67 44 00 39 6A 44 00 C9 6A 44 00 D9 6A 44 00 1E 6B 44 00 33 6C 44 00 5B 6C 44 00
69 6C 44 00 89 6D 44 00 8E 6D 44 00 AA 6D 44 00 29 71 44 00 4A 71 44 00 0A 7C 44 00 15 7C 44 00
23 7C 44 00 36 7F 44 00 5E 7F 44 00 61 7F 44 00 CE 7F 44 00 F3 7F 44 00 07 80 44 00 40 81 44 00
43 81 44 00 53 81 44 00 1B 82 44 00 39 82 44 00 33 83 44 00 47 83 44 00 D5 85 44 00 E5 85 44 00
1E 8B 44 00 29 8B 44 00 6A 8B 44 00 E8 91 44 00 77 95 44 00 85 95 44 00 97 95 44 00 B5 A1 44 00
85 BA 44 00 D6 BA 44 00 12 BB 44 00 33 BB 44 00 DF BD 44 00 0D C3 44 00 F2 C4 44 00 FB C4 44 00
06 C5 44 00 17 C5 44 00 28 C5 44 00 39 C5 44 00 4A C5 44 00 5B C5 44 00 64 C5 44 00 6C C5 44 00
7D C5 44 00 8E C5 44 00 9F C5 44 00 B0 C5 44 00 C1 C5 44 00 CD C5 44 00 D9 C5 44 00 E5 C5 44 00
F1 C5 44 00 FD C5 44 00 09 C6 44 00 3D C9 44 00 B5 CA 44 00 08 CD 44 00 0E CD 44 00 1F CD 44 00
3B CD 44 00 D8 D7 44 00 DF D7 44 00 D5 DF 44 00 50 E6 44 00 05 EB 44 00 65 EB 44 00 7E EC 44 00
78 EF 44 00 CD F5 44 00 68 F6 44 00 40 FC 44 00 43 FC 44 00 4E FC 44 00 5A FC 44 00 66 FC 44 00
DF 04 45 00 05 05 45 00 2D 05 45 00 42 05 45 00 8B 05 45 00 C2 05 45 00 80 0A 45 00 DF 0A 45 00
FB 15 45 00 FE 15 45 00 07 16 45 00 7E 16 45 00 91 16 45 00 C0 16 45 00 CA 16 45 00 F3 16 45 00
40 17 45 00 6A 17 45 00 D8 17 45 00 E1 17 45 00 EA 17 45 00 F4 17 45 00 FC 17 45 00 B3 18 45 00
58 1A 45 00 AE 1A 45 00 64 1F 45 00 C3 1F 45 00 BA 20 45 00 E1 22 45 00 AE 24 45 00 BB 24 45 00
C1 24 45 00 D7 24 45 00 DF 25 45 00 F5 25 45 00 55 26 45 00 69 26 45 00 72 26 45 00 76 26 45 00
81 26 45 00 8B 26 45 00 93 26 45 00 55 27 45 00 99 28 45 00 2F 29 45 00 97 2B 45 00 C7 2B 45 00
28 2C 45 00 84 30 45 00 DE 30 45 00 57 32 45 00 5B 33 45 00 D8 33 45 00 DD 33 45 00 2A 34 45 00
5C 37 45 00 BA 37 45 00 94 42 45 00 B0 42 45 00 D0 42 45 00 00 43 45 00 93 45 45 00 EC 45 45 00
FA 45 45 00 24 54 45 00 32 54 45 00 90 54 45 00 FB 56 45 00 0D 57 45 00 27 5D 45 00 ED 62 45 00
51 70 45 00 C9 71 45 00 0D 77 45 00 22 78 45 00 33 78 45 00 9A 78 45 00 FD 7C 45 00 19 82 45 00
1F 82 45 00 AA 84 45 00 3A 85 45 00 C3 87 45 00 4C 8D 45 00 68 8D 45 00 1D 92 45 00 71 93 45 00
8C 93 45 00 B9 93 45 00 CA 93 45 00 05 94 45 00 0D 94 45 00 13 94 45 00 1A 94 45 00 22 94 45 00
58 94 45 00 C4 94 45 00 53 95 45 00 76 95 45 00 96 95 45 00 B9 95 45 00 D9 95 45 00 DF 95 45 00
FB 95 45 00 14 96 45 00 31 96 45 00 4A 96 45 00 67 96 45 00 7C 96 45 00 8F 96 45 00 95 96 45 00
B1 96 45 00 C6 96 45 00 D9 96 45 00 DF 96 45 00 FB 96 45 00 10 97 45 00 23 97 45 00 FD 97 45 00
19 98 45 00 65 98 45 00 75 98 45 00 87 98 45 00 95 98 45 00 A3 98 45 00 B1 98 45 00 BF 98 45 00
CD 98 45 00 DB 98 45 00 E9 98 45 00 F7 98 45 00 31 9A 45 00 3D 9A 45 00 4C 9A 45 00 56 9A 45 00
67 9A 45 00 73 9A 45 00 84 9A 45 00 90 9A 45 00 A1 9A 45 00 AD 9A 45 00 BE 9A 45 00 CA 9A 45 00
DB 9A 45 00 E7 9A 45 00 F5 9A 45 00 01 9B 45 00 0F 9B 45 00 1B 9B 45 00 29 9B 45 00 35 9B 45 00
43 9B 45 00 14 9D 45 00 84 9D 45 00 A5 9E 45 00 B2 9E 45 00 F4 9E 45 00 FE 9E 45 00 94 9F 45 00
09 A0 45 00 B5 A0 45 00 D3 A0 45 00 EE A0 45 00 30 A2 45 00 3D A2 45 00 17 A3 45 00 1D A3 45 00
6A A3 45 00 72 A3 45 00 8D A3 45 00 95 A3 45 00 9F A3 45 00 A5 A3 45 00 A9 A3 45 00 AD A3 45 00
52 A4 45 00 AB A4 45 00 45 A5 45 00 48 A5 45 00 50 A5 45 00 65 A5 45 00 E3 A7 45 00 6D A9 45 00
7E A9 45 00 9E A9 45 00 C8 A9 45 00 23 AA 45 00 43 AA 45 00 65 AB 45 00 D2 AB 45 00 E5 AB 45 00
83 AC 45 00 E1 AC 45 00 5E AD 45 00 8F AD 45 00 AC AD 45 00 B6 AD 45 00 CA AD 45 00 D6 AD 45 00
E2 AD 45 00 EE AD 45 00 02 AE 45 00 16 AE 45 00 69 AF 45 00 75 AF 45 00 81 AF 45 00 57 B2 45 00
98 B4 45 00 77 B6 45 00 DA B7 45 00 DB BC 45 00 ED BC 45 00 00 BF 45 00 03 BF 45 00 0F BF 45 00
A1 BF 45 00 FD BF 45 00 C3 C0 45 00 DC C0 45 00 EE C0 45 00 13 C1 45 00 25 C1 45 00 4A C1 45 00
5C C1 45 00 81 C1 45 00 93 C1 45 00 A5 C1 45 00 B8 C2 45 00 D1 C2 45 00 F3 C2 45 00 28 C3 45 00
4A C3 45 00 7F C3 45 00 A1 C3 45 00 D6 C3 45 00 F8 C3 45 00 1A C4 45 00 D8 C6 45 00 F6 C6 45 00
8D C7 45 00 D7 C7 45 00 18 C8 45 00 26 C8 45 00 70 C8 45 00 9E C8 45 00 A1 C8 45 00 A4 C8 45 00
B1 C8 45 00 B7 C8 45 00 A5 C9 45 00 B5 C9 45 00 0C CB 45 00 3D CB 45 00 75 CB 45 00 0B CD 45 00
31 CD 45 00 39 D8 45 00 0A DD 45 00 0D DD 45 00 C5 DD 45 00 5E DE 45 00 A3 DE 45 00 F1 DE 45 00
F5 DE 45 00 06 E1 45 00 2C E1 45 00 0E E9 45 00 7F F5 45 00 C6 F5 45 00 87 F6 45 00 A2 F6 45 00
00 FB 45 00 9E FB 45 00 A1 FB 45 00 CC FB 45 00 4F FC 45 00 C3 FC 45 00 12 FD 45 00 D5 FF 45 00
3E 00 46 00 FA 01 46 00 15 02 46 00 31 02 46 00 4D 02 46 00 14 04 46 00 52 04 46 00 FE 04 46 00
20 0F 46 00 ED 12 46 00 8E 14 46 00 2D 18 46 00 61 1C 46 00 3E 23 46 00 7F 23 46 00 09 24 46 00
13 24 46 00 1D 24 46 00 4F 24 46 00 59 24 46 00 7D 24 46 00 8D 24 46 00 99 24 46 00 A3 24 46 00
AD 24 46 00 DF 24 46 00 E9 24 46 00 10 25 46 00 20 25 46 00 2C 25 46 00 36 25 46 00 40 25 46 00
72 25 46 00 7C 25 46 00 A3 25 46 00 B3 25 46 00 BF 25 46 00 C9 25 46 00 D3 25 46 00 05 26 46 00
0F 26 46 00 36 26 46 00 46 26 46 00 52 26 46 00 5C 26 46 00 66 26 46 00 98 26 46 00 A2 26 46 00
C9 26 46 00 D9 26 46 00 EB 26 46 00 F5 26 46 00 03 27 46 00 38 27 46 00 42 27 46 00 6F 27 46 00
7F 27 46 00 91 27 46 00 9B 27 46 00 A9 27 46 00 DE 27 46 00 E8 27 46 00 15 28 46 00 25 28 46 00
37 28 46 00 41 28 46 00 4F 28 46 00 84 28 46 00 8E 28 46 00 BB 28 46 00 CB 28 46 00 DD 28 46 00
E7 28 46 00 F5 28 46 00 2A 29 46 00 34 29 46 00 61 29 46 00 71 29 46 00 83 29 46 00 8D 29 46 00
9B 29 46 00 D0 29 46 00 DA 29 46 00 07 2A 46 00 17 2A 46 00 29 2A 46 00 33 2A 46 00 41 2A 46 00
76 2A 46 00 80 2A 46 00 AD 2A 46 00 BD 2A 46 00 CF 2A 46 00 D9 2A 46 00 E7 2A 46 00 1C 2B 46 00
26 2B 46 00 53 2B 46 00 63 2B 46 00 75 2B 46 00 7F 2B 46 00 8D 2B 46 00 C2 2B 46 00 CC 2B 46 00
F9 2B 46 00 09 2C 46 00 F2 2C 46 00 F8 2C 46 00 11 2D 46 00 9A 33 46 00 AD 33 46 00 39 41 46 00
6B 41 46 00 8C 41 46 00 B0 41 46 00 FD 41 46 00 87 42 46 00 A2 42 46 00 98 43 46 00 BA 43 46 00
E9 43 46 00 48 44 46 00 E5 44 46 00 07 46 46 00 2D 46 46 00 50 46 46 00 74 46 46 00 0A 47 46 00
15 47 46 00 1B 47 46 00 3A 47 46 00 3D 47 46 00 68 47 46 00 FD 51 46 00 F1 67 46 00 D2 76 46 00
9D 78 46 00 D8 79 46 00 EA 7B 46 00 4F 7D 46 00 52 7D 46 00 5D 7D 46 00 66 7D 46 00 8F 7D 46 00
A3 7D 46 00 B4 7D 46 00 65 7E 46 00 A5 7E 46 00 B5 7E 46 00 FE 7E 46 00 0D 80 46 00 0D 81 46 00
7D 81 46 00 51 82 46 00 1D 83 46 00 4B 83 46 00 74 84 46 00 9A 84 46 00 86 85 46 00 C1 85 46 00
54 86 46 00 82 86 46 00 D2 87 46 00 F5 87 46 00 DD 88 46 00 A1 89 46 00 D1 89 46 00 D6 89 46 00
9A 8A 46 00 BE 8A 46 00 E2 8B 46 00 BE 8C 46 00 EE 8C 46 00 E2 8D 46 00 CF 91 46 00 E4 91 46 00
14 92 46 00 1E 92 46 00 27 92 46 00 38 92 46 00 41 92 46 00 26 93 46 00 29 93 46 00 F6 93 46 00
F9 93 46 00 C4 97 46 00 44 98 46 00 5F 98 46 00 68 98 46 00 8E 98 46 00 EA 98 46 00 00 99 46 00
19 9C 46 00 27 9C 46 00 3F 9C 46 00 6B 9D 46 00 77 9D 46 00 99 9D 46 00 A5 9D 46 00 04 9E 46 00
0E 9E 46 00 14 9E 46 00 C8 9E 46 00 10 9F 46 00 3C 9F 46 00 5D 9F 46 00 0A A4 46 00 A4 A4 46 00
03 A5 46 00 E7 AB 46 00 03 AC 46 00 CC AC 46 00 94 AD 46 00 AF AD 46 00 78 AE 46 00 03 B0 46 00
D3 B0 46 00 12 B1 46 00 18 B1 46 00 29 B1 46 00 77 B1 46 00 3A B3 46 00 2A B8 46 00 4A B8 46 00
90 B8 46 00 9E B8 46 00 0B B9 46 00 3A B9 46 00 44 B9 46 00 6D B9 46 00 8F B9 46 00 3C BA 46 00
4A BA 46 00 A4 BA 46 00 12 BC 46 00 15 BC 46 00 18 BC 46 00 AE BC 46 00 B1 BC 46 00 B4 BC 46 00
07 BD 46 00 29 BD 46 00 C6 BD 46 00 97 C3 46 00 B5 C3 46 00 C6 C5 46 00 D4 C5 46 00 04 C6 46 00
11 C6 46 00 23 C6 46 00 A5 C6 46 00 86 C7 46 00 C8 C7 46 00 2B C8 46 00 32 CB 46 00 80 CC 46 00
DE CC 46 00 85 D7 46 00 8B D7 46 00 B2 D7 46 00 CE D7 46 00 9A D9 46 00 2E DB 46 00 82 DB 46 00
C7 DB 46 00 15 DC 46 00 19 DC 46 00 2D DC 46 00 7D DC 46 00 B1 DC 46 00 08 DF 46 00 40 E0 46 00
90 E1 46 00 EC E2 46 00 24 E4 46 00 74 E5 46 00 86 E7 46 00 89 E7 46 00 D2 E7 46 00 AD E8 46 00
D0 E8 46 00 D8 E8 46 00 EE E8 46 00 03 E9 46 00 20 E9 46 00 1D EA 46 00 40 EA 46 00 48 EA 46 00
5E EA 46 00 73 EA 46 00 90 EA 46 00 DC EA 46 00 FA EA 46 00 91 EB 46 00 DB EB 46 00 1C EC 46 00
2A EC 46 00 74 EC 46 00 A2 EC 46 00 A5 EC 46 00 A8 EC 46 00 B8 EC 46 00 D6 EC 46 00 6D ED 46 00
B7 ED 46 00 F8 ED 46 00 06 EE 46 00 50 EE 46 00 7E EE 46 00 81 EE 46 00 84 EE 46 00 DC EE 46 00
EA EE 46 00 1D EF 46 00 4D EF 46 00 7F F1 46 00 89 F1 46 00 B7 F1 46 00 D8 F1 46 00 CC F2 46 00
DD F2 46 00 15 F3 46 00 45 F6 46 00 48 F6 46 00 6B F6 46 00 AC F6 46 00 84 F7 46 00 A5 F7 46 00
B3 F7 46 00 0B F8 46 00 3F F8 46 00 7A F8 46 00 C4 FD 46 00 A1 FF 46 00 00 00 00 00 00 00 00 00
恢复修改的代码,回到原来的EIP处,检查各个寄存器值保持和原来的一样。
4.修改处理部分的代码,完成修复CC工作
要利用处理代码修复CC必须具备几个条件:
1.> CC 地址,这个我们通过上面的方法得到了。
2.> jump 的长度,这个通过分析知道在处理代码中提供给了我们,下面将会直接使用。
3.> jump 的跳转类型,这是个重点,也是个难点,我们将利用壳的模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的代码。
让我们一个一个的来修改处理代码:
提供我们得到的CC地址给处理代码,利用这个代码--
修改这个代码为:
00805E51 8B15 00808200 MOV EDX, DWORD PTR DS:[828000] ; ezcddax.00439891
00805E57 8915 008F8200 MOV DWORD PTR DS:[828F00], EDX ;传送参数
00805E5D C705 108F8200 0>MOV DWORD PTR DS:[828F10], ezcddax.00828000
00805E67 90 NOP
00805E68 90 NOP
00805E69 90 NOP
00805E6A 90 NOP
00805E6B 90 NOP
00805E6C 90 NOP
00805E6D 90 NOP
00805E6E 90 NOP
00805E6F 90 NOP
00805E70 90 NOP
00805E71 90 NOP
00805E72 90 NOP
00805E73 90 NOP
00805E74 90 NOP
00805E75 90 NOP
00805E76 90 NOP
00805E77 90 NOP
00805E78 90 NOP
00805E79 90 NOP
00805E7A 90 NOP
00805E7B 90 NOP
00805E7C EB 03 JMP SHORT ezcddax.00805E81
看看原来的取地址:
00805EC3 8B95 34ECFFFF MOV EDX, DWORD PTR SS:[EBP-13CC] //取Context域
00805EC9 52 PUSH EDX
修改方法是在地址00828F00 写入CC地址表的第一个地址:00439891 然后通过上面的修改把这个提供给处理代码使用。
下面这段代码是计算CC地址在不在表中
00805ECA 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
00805ED0 FF1485 98CD8300 CALL DWORD PTR DS:[EAX*4+83CD98]
00805ED7 83C4 04 ADD ESP, 4
00805EDA 8985 78EBFFFF MOV DWORD PTR SS:[EBP-1488], EAX
00805EE0 C785 74EBFFFF 0>MOV DWORD PTR SS:[EBP-148C], 0
00805EEA 8B8D 48EEFFFF MOV ECX, DWORD PTR SS:[EBP-11B8]
00805EF0 8B148D 00F38300 MOV EDX, DWORD PTR DS:[ECX*4+83F300]
00805EF7 8995 54EEFFFF MOV DWORD PTR SS:[EBP-11AC], EDX
00805EFD 8B85 74EBFFFF MOV EAX, DWORD PTR SS:[EBP-148C]
00805F03 3B85 54EEFFFF CMP EAX, DWORD PTR SS:[EBP-11AC]
00805F09 7D 5C JGE SHORT ezcddax.00805F67
00805F0B 8B85 54EEFFFF MOV EAX, DWORD PTR SS:[EBP-11AC]
00805F11 2B85 74EBFFFF SUB EAX, DWORD PTR SS:[EBP-148C]
00805F17 99 CDQ
00805F18 2BC2 SUB EAX, EDX
00805F1A D1F8 SAR EAX, 1
00805F1C 8B8D 74EBFFFF MOV ECX, DWORD PTR SS:[EBP-148C]
00805F22 03C8 ADD ECX, EAX
00805F24 898D 70EBFFFF MOV DWORD PTR SS:[EBP-1490], ECX
00805F2A 8B95 48EEFFFF MOV EDX, DWORD PTR SS:[EBP-11B8]
00805F30 8B0495 7CF28300 MOV EAX, DWORD PTR DS:[EDX*4+83F27C]
00805F37 8B8D 70EBFFFF MOV ECX, DWORD PTR SS:[EBP-1490]
00805F3D 8B95 78EBFFFF MOV EDX, DWORD PTR SS:[EBP-1488]
00805F43 3B1488 CMP EDX, DWORD PTR DS:[EAX+ECX*4]
00805F46 76 11 JBE SHORT ezcddax.00805F59
00805F48 8B85 70EBFFFF MOV EAX, DWORD PTR SS:[EBP-1490]
00805F4E 83C0 01 ADD EAX, 1
00805F51 8985 74EBFFFF MOV DWORD PTR SS:[EBP-148C], EAX
00805F57 EB 0C JMP SHORT ezcddax.00805F65
00805F59 8B8D 70EBFFFF MOV ECX, DWORD PTR SS:[EBP-1490]
00805F5F 898D 54EEFFFF MOV DWORD PTR SS:[EBP-11AC], ECX
00805F65 ^ EB 96 JMP SHORT ezcddax.00805EFD
00805F67 60 PUSHAD
00805F68 33C0 XOR EAX, EAX
00805F6A 75 02 JNZ SHORT ezcddax.00805F6E
00805F6C EB 15 JMP SHORT ezcddax.00805F83
00805F6E EB 33 JMP SHORT ezcddax.00805FA3
00805F70 C075 18 7A SAL BYTE PTR SS:[EBP+18], 7A
00805F74 0C 70 OR AL, 70
00805F76 0E PUSH CS
00805F77 EB 0D JMP SHORT ezcddax.00805F86
00805F79 E8 720E79F1 CALL F1F96DF0
00805F7E FF15 00790974 CALL DWORD PTR DS:[74097900]
00805F84 F0:EB 87 LOCK JMP SHORT ezcddax.00805F0E ; 不允许锁定前缀
00805F87 DB7A F0 FSTP TBYTE PTR DS:[EDX-10]
00805F8A A0 33618B95 MOV AL, BYTE PTR DS:[958B6133]
00805F8F 48 DEC EAX
00805F90 EE OUT DX, AL
00805F91 FFFF ??? ; 未知命令
00805F93 8B0495 7CF28300 MOV EAX, DWORD PTR DS:[EDX*4+83F27C]
00805F9A 8B8D 74EBFFFF MOV ECX, DWORD PTR SS:[EBP-148C]
00805FA0 8B1488 MOV EDX, DWORD PTR DS:[EAX+ECX*4]
00805FA3 3B95 78EBFFFF CMP EDX, DWORD PTR SS:[EBP-1488] //比较表中的值和CC地址计算的值是否相等,测试CC地址是否有效
00805FA9 0F85 90020000 JNZ ezcddax.0080623F
下面来到壳的模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口,而这个入口是个与CC地址有关的变量。
00806006 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
0080600C 8B0C85 64F38300 MOV ECX, DWORD PTR DS:[EAX*4+83F364]
00806013 8B95 74EBFFFF MOV EDX, DWORD PTR SS:[EBP-148C]
00806019 8B0491 MOV EAX, DWORD PTR DS:[ECX+EDX*4]
0080601C 8985 5CEBFFFF MOV DWORD PTR SS:[EBP-14A4], EAX
00806022 8B8D 3CECFFFF MOV ECX, DWORD PTR SS:[EBP-13C4]
00806028 81E1 D70F0000 AND ECX, 0FD7
0080602E 898D 6CEBFFFF MOV DWORD PTR SS:[EBP-1494], ECX
00806034 8B95 5CEBFFFF MOV EDX, DWORD PTR SS:[EBP-14A4]
0080603A 81E2 000000FF AND EDX, FF000000
00806040 C1EA 18 SHR EDX, 18
00806043 8995 60EBFFFF MOV DWORD PTR SS:[EBP-14A0], EDX
00806049 8B85 5CEBFFFF MOV EAX, DWORD PTR SS:[EBP-14A4]
0080604F 25 FFFFFF00 AND EAX, 0FFFFFF
00806054 8985 64EBFFFF MOV DWORD PTR SS:[EBP-149C], EAX
0080605A 8B8D 28ECFFFF MOV ECX, DWORD PTR SS:[EBP-13D8]
00806060 51 PUSH ECX
00806061 8B95 6CEBFFFF MOV EDX, DWORD PTR SS:[EBP-1494]
00806067 52 PUSH EDX
00806068 8B85 64EBFFFF MOV EAX, DWORD PTR SS:[EBP-149C]
0080606E 50 PUSH EAX
0080606F 8B8D 60EBFFFF MOV ECX, DWORD PTR SS:[EBP-14A0]
00806075 FF148D 0C888300 CALL DWORD PTR DS:[ECX*4+83880C] //模拟模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口
0080607C 83C4 0C ADD ESP, 0C
0080607F 8985 68EBFFFF MOV DWORD PTR SS:[EBP-1498], EAX
00806085 8B95 68EBFFFF MOV EDX, DWORD PTR SS:[EBP-1498] //取标志
0080608B 83E2 01 AND EDX, 1
0080608E 85D2 TEST EDX, EDX
00806090 0F84 AE000000 JE ezcddax.00806144 //判断是否需要跳转
在 00806075 FF148D 0C888300 CALL DWORD PTR DS:[ECX*4+83880C] 下断点,这个就是手工修复的麻烦所在,要每次跟踪看看。
正是这种方法没有技术,所以一直觉得没必要写出来,怕误人。
中断在上面的地址处,看看函数的入口是:
00806075 FF148D 0C888300 CALL DWORD PTR DS:[ECX*4+83880C] ; ezcddax.007FCAE9
DS:[00838BBC]=007FCAE9 (ezcddax.007FCAE9)
F7进入,看看这个处理过程:
007FCAE9 55 PUSH EBP
007FCAEA 8BEC MOV EBP, ESP
007FCAEC 83EC 40 SUB ESP, 40
007FCAEF C745 D0 6400000>MOV DWORD PTR SS:[EBP-30], 64
007FCAF6 C745 D4 5900000>MOV DWORD PTR SS:[EBP-2C], 59
007FCAFD C745 D8 8400000>MOV DWORD PTR SS:[EBP-28], 84
007FCB04 C745 DC 9C00000>MOV DWORD PTR SS:[EBP-24], 9C
007FCB0B C745 E0 C500000>MOV DWORD PTR SS:[EBP-20], 0C5
007FCB12 C745 E4 7800000>MOV DWORD PTR SS:[EBP-1C], 78
007FCB19 C745 E8 9D00000>MOV DWORD PTR SS:[EBP-18], 9D
007FCB20 C745 EC 4700000>MOV DWORD PTR SS:[EBP-14], 47
007FCB27 C745 F0 0400000>MOV DWORD PTR SS:[EBP-10], 4
007FCB2E C745 C0 0700000>MOV DWORD PTR SS:[EBP-40], 7
007FCB35 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007FCB38 C1E8 04 SHR EAX, 4
007FCB3B 83E0 07 AND EAX, 7
007FCB3E 8B4C85 D0 MOV ECX, DWORD PTR SS:[EBP+EAX*4-30]
007FCB42 894D C4 MOV DWORD PTR SS:[EBP-3C], ECX
007FCB45 8B45 C4 MOV EAX, DWORD PTR SS:[EBP-3C]
007FCB48 99 CDQ
007FCB49 B9 19000000 MOV ECX, 19
007FCB4E F7F9 IDIV ECX
007FCB50 8945 CC MOV DWORD PTR SS:[EBP-34], EAX
007FCB53 8B45 C4 MOV EAX, DWORD PTR SS:[EBP-3C]
007FCB56 99 CDQ
007FCB57 B9 19000000 MOV ECX, 19
007FCB5C F7F9 IDIV ECX
007FCB5E 8955 C8 MOV DWORD PTR SS:[EBP-38], EDX
007FCB61 8B55 CC MOV EDX, DWORD PTR SS:[EBP-34]
007FCB64 3B55 C8 CMP EDX, DWORD PTR SS:[EBP-38]
007FCB67 75 11 JNZ SHORT ezcddax.007FCB7A
007FCB69 8B45 C8 MOV EAX, DWORD PTR SS:[EBP-38]
007FCB6C 83C0 01 ADD EAX, 1
007FCB6F 99 CDQ
007FCB70 B9 19000000 MOV ECX, 19
007FCB75 F7F9 IDIV ECX
007FCB77 8955 C8 MOV DWORD PTR SS:[EBP-38], EDX
007FCB7A 8B55 C4 MOV EDX, DWORD PTR SS:[EBP-3C]
007FCB7D 8B45 CC MOV EAX, DWORD PTR SS:[EBP-34]
007FCB80 8B0C95 48E48300 MOV ECX, DWORD PTR DS:[EDX*4+83E448]
007FCB87 330C85 CC828300 XOR ECX, DWORD PTR DS:[EAX*4+8382CC]
007FCB8E 8B55 C8 MOV EDX, DWORD PTR SS:[EBP-38]
007FCB91 330C95 CC828300 XOR ECX, DWORD PTR DS:[EDX*4+8382CC]
007FCB98 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007FCB9B 8B45 0C MOV EAX, DWORD PTR SS:[EBP+C]
007FCB9E 50 PUSH EAX
007FCB9F 8B4D C4 MOV ECX, DWORD PTR SS:[EBP-3C]
007FCBA2 0FBE91 88CC8300 MOVSX EDX, BYTE PTR DS:[ECX+83CC88]
007FCBA9 FF1495 C0CB8300 CALL DWORD PTR DS:[EDX*4+83CBC0]
007FCBB0 83C4 04 ADD ESP, 4
007FCBB3 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007FCBB6 8B45 10 MOV EAX, DWORD PTR SS:[EBP+10]
007FCBB9 50 PUSH EAX
007FCBBA 8B4D FC MOV ECX, DWORD PTR SS:[EBP-4]
007FCBBD 51 PUSH ECX
007FCBBE FF55 F8 CALL DWORD PTR SS:[EBP-8] //真正的模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口
007FCBC1 83C4 08 ADD ESP, 8
007FCBC4 50 PUSH EAX
007FCBC5 8B55 C4 MOV EDX, DWORD PTR SS:[EBP-3C]
007FCBC8 0FBE82 88CC8300 MOVSX EAX, BYTE PTR DS:[EDX+83CC88]
007FCBCF FF1485 24CC8300 CALL DWORD PTR DS:[EAX*4+83CC24]
007FCBD6 83C4 04 ADD ESP, 4
007FCBD9 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007FCBDC 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C]
007FCBDF 83E0 01 AND EAX, 1
007FCBE2 8BE5 MOV ESP, EBP
007FCBE4 5D POP EBP
007FCBE5 C3 RETN
F7进入 007FCBBE (模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数 )
分析这个函数:
007E8FE9 55 PUSH EBP
007E8FEA 8BEC MOV EBP, ESP
007E8FEC 83EC 0C SUB ESP, 0C
007E8FEF 53 PUSH EBX
007E8FF0 56 PUSH ESI
007E8FF1 57 PUSH EDI
007E8FF2 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E8FF5 50 PUSH EAX
007E8FF6 FF15 5CCC8300 CALL DWORD PTR DS:[83CC5C] ; ezcddax.007DDF8E
007E8FFC 83C4 04 ADD ESP, 4
007E8FFF 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E9002 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] //取域中EFLAGS寄存器值
堆栈 SS:[0012DC30]=00000246 <--CC发生时EFLAGS寄存器值
EAX=00000246
007E9005 70 07 JO SHORT ezcddax.007E900E
007E9007 7C 03 JL SHORT ezcddax.007E900C
007E9009 EB 05 JMP SHORT ezcddax.007E9010
007E900B - E9 74FBEBF9 JMP FA6A8B84
007E9010 53 PUSH EBX
007E9011 8B5D 0C MOV EBX, DWORD PTR SS:[EBP+C]
007E9014 BB FFFF0000 MOV EBX, 0FFFF
007E9019 23C3 AND EAX, EBX //取后面2个字节,注意对EAX的处理
007E901B 51 PUSH ECX
007E901C B5 2C MOV CH, 2C
007E901E 80ED 01 SUB CH, 1
007E9021 80ED 20 SUB CH, 20
007E9024 FECD DEC CH
007E9026 FECD DEC CH
007E9028 80ED 04 SUB CH, 4
007E902B FECD DEC CH
007E902D 80ED 03 SUB CH, 3
007E9030 FECD DEC CH
007E9032 22E5 AND AH, CH
007E9034 B1 70 MOV CL, 70
007E9036 80E9 02 SUB CL, 2
007E9039 FEC9 DEC CL
007E903B FEC9 DEC CL
007E903D FEC9 DEC CL
007E903F 80E9 06 SUB CL, 6
007E9042 F6D0 NOT AL
007E9044 0FC9 BSWAP ECX
007E9046 F6D0 NOT AL
007E9048 83E0 00 AND EAX, 0 //EAX and 0 *
007E904B 0FC9 BSWAP ECX
007E904D FEC9 DEC CL
007E904F FEC9 DEC CL
007E9051 80E9 12 SUB CL, 12
007E9054 80C1 0B ADD CL, 0B
007E9057 FEC9 DEC CL
007E9059 FEC9 DEC CL
007E905B 70 07 JO SHORT ezcddax.007E9064
007E905D 7C 03 JL SHORT ezcddax.007E9062
007E905F EB 05 JMP SHORT ezcddax.007E9066
007E9061 C7 ???
007E9062 ^ 74 FB JE SHORT ezcddax.007E905F
007E9064 ^ EB F9 JMP SHORT ezcddax.007E905F
007E9066 FEC9 DEC CL
007E9068 FEC9 DEC CL
007E906A FEC9 DEC CL
007E906C FEC9 DEC CL
007E906E 80E9 40 SUB CL, 40
007E9071 80E9 01 SUB CL, 1
007E9074 FEC9 DEC CL
007E9076 FEC9 DEC CL
007E9078 FEC9 DEC CL
007E907A FEC9 DEC CL
007E907C FEC9 DEC CL
007E907E FEC9 DEC CL
007E9080 FEC9 DEC CL
007E9082 40 INC EAX // EAX +1 **
007E9083 FEC9 DEC CL
007E9085 F7D1 NOT ECX
007E9087 0FC8 BSWAP EAX
007E9089 F7D1 NOT ECX
007E908B 0FC8 BSWAP EAX
007E908D FEC1 INC CL
007E908F 80C1 02 ADD CL, 2
007E9092 59 POP ECX
007E9093 5B POP EBX
007E9094 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX // 得到的答案EAX=1 ***
007E9097 8B0D CC838300 MOV ECX, DWORD PTR DS:[8383CC]
007E909D 330D D0838300 XOR ECX, DWORD PTR DS:[8383D0]
007E90A3 D1E1 SHL ECX, 1
007E90A5 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E90A8 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E90AC 74 09 JE SHORT ezcddax.007E90B7 // 会跳吗?永远不
007E90AE 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E90B1 83CA 01 OR EDX, 1
007E90B4 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E90B7 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E90BA 50 PUSH EAX
007E90BB FF15 F8CB8300 CALL DWORD PTR DS:[83CBF8] ; ezcddax.007DDE09
007E90C1 83C4 04 ADD ESP, 4
007E90C4 5F POP EDI
007E90C5 5E POP ESI
007E90C6 5B POP EBX
007E90C7 8BE5 MOV ESP, EBP
007E90C9 5D POP EBP
007E90CA C3 RETN
继续到跳转时的计算偏移量的代码:
008060BB 61 POPAD
008060BC 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
008060C2 8B0C85 18F28300 MOV ECX, DWORD PTR DS:[EAX*4+83F218]
008060C9 8B85 74EBFFFF MOV EAX, DWORD PTR SS:[EBP-148C]
008060CF 33D2 XOR EDX, EDX
008060D1 BE 17000000 MOV ESI, 17
008060D6 F7F6 DIV ESI
008060D8 8B85 74EBFFFF MOV EAX, DWORD PTR SS:[EBP-148C]
008060DE 8B0C81 MOV ECX, DWORD PTR DS:[ECX+EAX*4]
008060E1 338C95 70EEFFFF XOR ECX, DWORD PTR SS:[EBP+EDX*4-1190] ; 计算偏移量
008060E8 8B95 34ECFFFF MOV EDX, DWORD PTR SS:[EBP-13CC] ;CC发生时的地址
008060EE 03D1 ADD EDX, ECX
ECX=00000004 计算偏移量
EDX=00439891 (ezcddax.00439891) CC发生时的地址
008060F0 8995 34ECFFFF MOV DWORD PTR SS:[EBP-13CC], EDX
如果不跳转就到计算jump代码长度:
0080614F 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
00806155 8B0C85 D0F38300 MOV ECX, DWORD PTR DS:[EAX*4+83F3D0]
0080615C 8B95 74EBFFFF MOV EDX, DWORD PTR SS:[EBP-148C]
00806162 33C0 XOR EAX, EAX
00806164 8A0411 MOV AL, BYTE PTR DS:[ECX+EDX]
///////////////////////////////////////////////////////////////
指向一张跳转代码长度表,这个表中数值是代码长度-1位(因为CC占了一位)
01E8DC70 01 05 01 01 04 01 01 01 01 01 01 05 05 01 01 01
01E8DC80 01 05 04 01 05 01 01 01 01 04 01 01 01 01 05 04
01E8DC90 01 05 05 01 01 01 01 01 01 01 01 01 01 05 01 01
01E8DCA0 01 01 01 05 05 01 01 05 01 01 01 01 01 05 01 04
01E8DCB0 01 01 05 05 04 01 01 01 05 01 05 01 01 05 05 01
01E8DCC0 01 01 01 01 05 01 04 BA 0D F0 AD BA 0D F0 AD BA ?瓠?瓠
01E8DCD0 AB AB AB AB AB AB AB AB 00 00 00 00 00 00 00 00 ........
分析一般程序的代码都知道,跳转的长度存在3种情况:
I 短距离jump 长度为2个字节
II 长距离jump 长度为6个字节
III 长距离jmp 长度为5个字节
根据这个表的长度就能知道是长短jump,因为长短不同的jump的二进制表示方法不同。
//////////////////////////////////////////////////////////////////
00806167 8B8D 34ECFFFF MOV ECX, DWORD PTR SS:[EBP-13CC]
0080616D 03C8 ADD ECX, EAX
0080616F 898D 34ECFFFF MOV DWORD PTR SS:[EBP-13CC], ECX
0080613A 61 POPAD
0080613B 9D POPFD
0080613C 66:92 XCHG AX, DX
0080613E 66:92 XCHG AX, DX
00806140 8BC0 MOV EAX, EAX
00806142 EB 75 JMP SHORT ezcddax.008061B9
重新传输参数,再次修复CC
008061B9 8305 108F8200 0>ADD DWORD PTR DS:[828F10], 4 ; 参数+1
008061C0 8B15 108F8200 MOV EDX, DWORD PTR DS:[828F10]
008061C6 8B12 MOV EDX, DWORD PTR DS:[EDX]
008061C8 8915 008F8200 MOV DWORD PTR DS:[828F00], EDX
008061CE 83FA 00 CMP EDX, 0
008061D1 ^ 74 E6 JE SHORT ezcddax.008061B9 ; 如果出现00000000,表示这个地址不是CC
008061D3 83FA FF CMP EDX, -1
008061D6 74 08 JE SHORT ezcddax.008061E0 ; 如果是ffffffff 表示修复结束。
008061D8 ^ E9 A6FCFFFF JMP ezcddax.00805E83
008061DD 90 NOP
008061DE 90 NOP
008061DF 90 NOP
008061E0 90 NOP
008061E1 90 NOP
008061E2 90 NOP
83 05 10 8F 82 00 04 8B 15 10 8F 82 00 8B 12 89 15 00 8F 82 00 83 FA 00 74 E6 83 FA FF 74 08 E9
A6 FC FF FF 90 90 90 90 90 90
经过调试,把处理代码修改为下面这样,实行的功能基本完成。
运行修改代码前必须做到:
<1>. 把dump下的.text段二进制复制到,现在调试时的.text段中。
<2>. Alt+M 在内存窗口中修改.text段的[访问属性]为[完全访问]。
<3>. 把收集的CC地址的二进制值复制到指定的内存中,
我是放在[00828000]处,调试时发现不是int3的CC二进制修改为00000000,不停调试,不停的修改。
<4>. 在CC地址的最后放入FFFFFFFF用以表示CC修复结束。
<5>. 调试时要注意复制修改后的程序二进制数据,防止出现错误,完成后把.text中的二进制数据复制到dump的文件中保存。
00805E39 . 50 PUSH EAX ; /pContext
00805E3A . 8B8D 50EEFFFF MOV ECX, DWORD PTR SS:[EBP-11B0] ; |
00805E40 . 51 PUSH ECX ; |hThread
00805E41 . FF15 E0808300 CALL DWORD PTR DS:[<&KERNEL32.GetThreadCo>; \GetThreadContext
00805E47 . 90 NOP
00805E48 . 90 NOP
00805E49 . 52 PUSH EDX
00805E4A . 8B15 00808200 MOV EDX, DWORD PTR DS:[828000] ; ezcddax.00439891
00805E50 . 8915 008F8200 MOV DWORD PTR DS:[828F00], EDX
00805E56 . C705 108F8200 0080>MOV DWORD PTR DS:[828F10], ezcddax.00828>
00805E60 . 5A POP EDX
00805E61 . 90 NOP
00805E62 . 90 NOP
00805E63 . 90 NOP
00805E64 . 90 NOP
00805E65 . 90 NOP
00805E66 . 90 NOP
00805E67 . 90 NOP
00805E68 . 90 NOP
00805E69 . 90 NOP
00805E6A . 90 NOP
00805E6B . 90 NOP
00805E6C . 90 NOP
00805E6D . 90 NOP
00805E6E . 90 NOP
00805E6F . 90 NOP
00805E70 . 90 NOP
00805E71 . 90 NOP
00805E72 . 90 NOP
00805E73 . 90 NOP
00805E74 . 90 NOP
00805E75 . 90 NOP
00805E76 . 90 NOP
00805E77 . 90 NOP
00805E78 . 90 NOP
00805E79 . 90 NOP
00805E7A . 90 NOP
00805E7B . 90 NOP
00805E7C . 90 NOP
00805E7D . 90 NOP
00805E7E . 90 NOP
00805E7F . 90 NOP
00805E80 . 90 NOP
00805E81 . 90 NOP
00805E82 . 90 NOP
00805E83 > 90 NOP
00805E84 . 90 NOP
00805E85 . 90 NOP
00805E86 . 90 NOP
00805E87 . 90 NOP
00805E88 . 90 NOP
00805E89 . 90 NOP
00805E8A . 60 PUSHAD
00805E8B . C785 78EBFFFF 0000>MOV DWORD PTR SS:[EBP-1488], 0
00805E95 . 6A FF PUSH -1 ; /Arg3 = FFFFFFFF
00805E97 . 6A 04 PUSH 4 ; |Arg2 = 00000004
00805E99 . 8D95 34ECFFFF LEA EDX, DWORD PTR SS:[EBP-13CC] ; |堆栈地址=0012E3D0
00805E9F . 52 PUSH EDX ; |Arg1
00805EA0 . E8 EB60FDFF CALL ezcddax.007DBF90 ; \ezcddax.007DBF90
00805EA5 . 83C4 0C ADD ESP, 0C
00805EA8 . 8985 4CEEFFFF MOV DWORD PTR SS:[EBP-11B4], EAX
00805EAE . 8B85 4CEEFFFF MOV EAX, DWORD PTR SS:[EBP-11B4]
00805EB4 . 33D2 XOR EDX, EDX
00805EB6 . B9 19000000 MOV ECX, 19
00805EBB . F7F1 DIV ECX
00805EBD . 8995 48EEFFFF MOV DWORD PTR SS:[EBP-11B8], EDX
00805EC3 . 8B95 34ECFFFF MOV EDX, DWORD PTR SS:[EBP-13CC]
00805EC9 . 52 PUSH EDX
00805ECA . 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
00805ED0 . FF1485 98CD8300 CALL DWORD PTR DS:[EAX*4+83CD98]
00805ED7 . 83C4 04 ADD ESP, 4
00805EDA . 8985 78EBFFFF MOV DWORD PTR SS:[EBP-1488], EAX
00805EE0 . C785 74EBFFFF 0000>MOV DWORD PTR SS:[EBP-148C], 0
00805EEA . 8B8D 48EEFFFF MOV ECX, DWORD PTR SS:[EBP-11B8]
00805EF0 . 8B148D 00F38300 MOV EDX, DWORD PTR DS:[ECX*4+83F300]
00805EF7 . 8995 54EEFFFF MOV DWORD PTR SS:[EBP-11AC], EDX
00805EFD > 8B85 74EBFFFF MOV EAX, DWORD PTR SS:[EBP-148C]
00805F03 . 3B85 54EEFFFF CMP EAX, DWORD PTR SS:[EBP-11AC]
00805F09 . 7D 5C JGE SHORT ezcddax.00805F67
00805F0B . 8B85 54EEFFFF MOV EAX, DWORD PTR SS:[EBP-11AC]
00805F11 . 2B85 74EBFFFF SUB EAX, DWORD PTR SS:[EBP-148C]
00805F17 . 99 CDQ
00805F18 . 2BC2 SUB EAX, EDX
00805F1A . D1F8 SAR EAX, 1
00805F1C . 8B8D 74EBFFFF MOV ECX, DWORD PTR SS:[EBP-148C]
00805F22 . 03C8 ADD ECX, EAX
00805F24 . 898D 70EBFFFF MOV DWORD PTR SS:[EBP-1490], ECX
00805F2A . 8B95 48EEFFFF MOV EDX, DWORD PTR SS:[EBP-11B8]
00805F30 . 8B0495 7CF28300 MOV EAX, DWORD PTR DS:[EDX*4+83F27C]
00805F37 . 8B8D 70EBFFFF MOV ECX, DWORD PTR SS:[EBP-1490]
00805F3D . 8B95 78EBFFFF MOV EDX, DWORD PTR SS:[EBP-1488]
00805F43 . 3B1488 CMP EDX, DWORD PTR DS:[EAX+ECX*4]
00805F46 . 76 11 JBE SHORT ezcddax.00805F59
00805F48 . 8B85 70EBFFFF MOV EAX, DWORD PTR SS:[EBP-1490]
00805F4E . 83C0 01 ADD EAX, 1
00805F51 . 8985 74EBFFFF MOV DWORD PTR SS:[EBP-148C], EAX
00805F57 . EB 0C JMP SHORT ezcddax.00805F65
00805F59 > 8B8D 70EBFFFF MOV ECX, DWORD PTR SS:[EBP-1490]
00805F5F . 898D 54EEFFFF MOV DWORD PTR SS:[EBP-11AC], ECX
00805F65 >^ EB 96 JMP SHORT ezcddax.00805EFD
00805F67 > 90 NOP
00805F68 . 90 NOP
00805F69 . 90 NOP
00805F6A . 90 NOP
00805F6B . 90 NOP
00805F6C . 90 NOP
00805F6D . 90 NOP
00805F6E . 90 NOP
00805F6F . 90 NOP
00805F70 . 90 NOP
00805F71 . 90 NOP
00805F72 . 90 NOP
00805F73 . 90 NOP
00805F74 . 90 NOP
00805F75 . 90 NOP
00805F76 . 90 NOP
00805F77 . 90 NOP
00805F78 . 90 NOP
00805F79 . 90 NOP
00805F7A . 90 NOP
00805F7B . 90 NOP
00805F7C . 90 NOP
00805F7D . 90 NOP
00805F7E . 90 NOP
00805F7F . 90 NOP
00805F80 . 90 NOP
00805F81 . 90 NOP
00805F82 . 90 NOP
00805F83 . 90 NOP
00805F84 . 90 NOP
00805F85 . 90 NOP
00805F86 . 90 NOP
00805F87 . 90 NOP
00805F88 . 90 NOP
00805F89 . 90 NOP
00805F8A . 90 NOP
00805F8B . 90 NOP
00805F8C . 90 NOP
00805F8D . 8B95 48EEFFFF MOV EDX, DWORD PTR SS:[EBP-11B8]
00805F93 . 8B0495 7CF28300 MOV EAX, DWORD PTR DS:[EDX*4+83F27C]
00805F9A . 8B8D 74EBFFFF MOV ECX, DWORD PTR SS:[EBP-148C]
00805FA0 . 8B1488 MOV EDX, DWORD PTR DS:[EAX+ECX*4]
00805FA3 . 3B95 78EBFFFF CMP EDX, DWORD PTR SS:[EBP-1488] ; 判断CC地址是否在表中
00805FA9 . 0F85 0A020000 JNZ ezcddax.008061B9
00805FAF . 90 NOP
00805FB0 . 90 NOP
00805FB1 . 90 NOP ; 下面开始修改相关代码:
00805FB2 . 90 NOP ; 首先通过壳计算jump代码长度的代码,获得代码长度,用以区分长短跳转。
00805FB3 . E8 97010000 CALL ezcddax.0080614F ; 把壳计算jump代码长度的一段修改成计算的函数
00805FB8 . 90 NOP
00805FB9 . 90 NOP
00805FBA . 90 NOP
00805FBB . 90 NOP
00805FBC . 90 NOP
00805FBD . 90 NOP
00805FBE . E8 F9000000 CALL ezcddax.008060BC ; 计算jump偏移量
00805FC3 . 803D 208F8200 04 CMP BYTE PTR DS:[828F20], 4 ; 根据代码长度判断长短跳转
00805FCA 7F 30 JG SHORT ezcddax.00805FFC
00805FCC 7C 38 JL SHORT ezcddax.00806006 ; 短跳转直接处理
00805FCE 66:833D 308F8200 0>CMP WORD PTR DS:[828F30], 4 ; 这是jmp的另一种类型,arm把跳转到下一代码的类型也判断为jmp 偏移量是4
00805FD6 74 0F JE SHORT ezcddax.00805FE7
00805FD8 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC] ; 剩下的就是长jmp类型了
00805FDE C640 FF E9 MOV BYTE PTR DS:[EAX-1], 0E9 ; 填入长jmp类型代码
00805FE2 E9 08010000 JMP ezcddax.008060EF ; 直接到判断正反方向跳转的代码
00805FE7 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC] ; 偏移量是4的jmp类型用nop填入
00805FED C640 FF 90 MOV BYTE PTR DS:[EAX-1], 90
00805FF1 C700 90909090 MOV DWORD PTR DS:[EAX], 90909090
00805FF7 E9 BD010000 JMP ezcddax.008061B9 ; 修复算完成,直接到下一循环。
00805FFC 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC] ; 如果是长跳转,写入长跳转标记代码
00806002 C640 FF 0F MOV BYTE PTR DS:[EAX-1], 0F ; 注意是单字节,写入CC地址
00806006 > 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8]
0080600C . 8B0C85 64F38300 MOV ECX, DWORD PTR DS:[EAX*4+83F364]
00806013 . 8B95 74EBFFFF MOV EDX, DWORD PTR SS:[EBP-148C]
00806019 . 8B0491 MOV EAX, DWORD PTR DS:[ECX+EDX*4]
0080601C . 8985 5CEBFFFF MOV DWORD PTR SS:[EBP-14A4], EAX
00806022 . 8B8D 3CECFFFF MOV ECX, DWORD PTR SS:[EBP-13C4]
00806028 . 81E1 D70F0000 AND ECX, 0FD7
0080602E . 898D 6CEBFFFF MOV DWORD PTR SS:[EBP-1494], ECX
00806034 . 8B95 5CEBFFFF MOV EDX, DWORD PTR SS:[EBP-14A4]
0080603A . 81E2 000000FF AND EDX, FF000000
00806040 . C1EA 18 SHR EDX, 18
00806043 . 8995 60EBFFFF MOV DWORD PTR SS:[EBP-14A0], EDX
00806049 . 8B85 5CEBFFFF MOV EAX, DWORD PTR SS:[EBP-14A4]
0080604F . 25 FFFFFF00 AND EAX, 0FFFFFF
00806054 . 8985 64EBFFFF MOV DWORD PTR SS:[EBP-149C], EAX
0080605A . 8B8D 28ECFFFF MOV ECX, DWORD PTR SS:[EBP-13D8]
00806060 . 51 PUSH ECX
00806061 . 8B95 6CEBFFFF MOV EDX, DWORD PTR SS:[EBP-1494]
00806067 . 52 PUSH EDX
00806068 . 8B85 64EBFFFF MOV EAX, DWORD PTR SS:[EBP-149C]
0080606E . 50 PUSH EAX
0080606F . 8B8D 60EBFFFF MOV ECX, DWORD PTR SS:[EBP-14A0]
00806075 . FF148D 0C888300 CALL DWORD PTR DS:[ECX*4+83880C] ; 模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口
0080607C . 83C4 0C ADD ESP, 0C
0080607F . 8985 68EBFFFF MOV DWORD PTR SS:[EBP-1498], EAX
00806085 . 8B95 68EBFFFF MOV EDX, DWORD PTR SS:[EBP-1498]
0080608B . 33D2 XOR EDX, EDX
0080608D . 803D 208F8200 04 CMP BYTE PTR DS:[828F20], 4 ; 下面根据不同的代码长度,到不同的写入偏移量的代码
00806094 . 0F8C D3000000 JL ezcddax.0080616D ; <4 是短跳转
0080609A . 7F 7D JG SHORT ezcddax.00806119 ; >4 是长跳转
0080609C . 74 51 JE SHORT ezcddax.008060EF ; =4 是jmp类型
0080609E . 90 NOP
0080609F . 90 NOP
008060A0 . 90 NOP
008060A1 . 90 NOP
008060A2 . 90 NOP
008060A3 . 90 NOP
008060A4 . 90 NOP
008060A5 . 90 NOP
008060A6 . 90 NOP
008060A7 . 90 NOP
008060A8 . 90 NOP
008060A9 . 90 NOP
008060AA . 90 NOP
008060AB . 90 NOP
008060AC . 90 NOP
008060AD . 90 NOP
008060AE . 90 NOP
008060AF . 90 NOP
008060B0 . 90 NOP
008060B1 . 90 NOP
008060B2 . 90 NOP
008060B3 . 90 NOP
008060B4 . 90 NOP
008060B5 . 90 NOP
008060B6 . 90 NOP
008060B7 90 NOP
008060B8 90 NOP
008060B9 90 NOP
008060BA 90 NOP
008060BB 90 NOP
008060BC /$ 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8] ; 修改成计算jump偏移量的函数
008060C2 |. 8B0C85 18F28300 MOV ECX, DWORD PTR DS:[EAX*4+83F218]
008060C9 |. 8B85 74EBFFFF MOV EAX, DWORD PTR SS:[EBP-148C]
008060CF |. 33D2 XOR EDX, EDX
008060D1 |. BE 17000000 MOV ESI, 17
008060D6 |. F7F6 DIV ESI
008060D8 |. 8B85 74EBFFFF MOV EAX, DWORD PTR SS:[EBP-148C]
008060DE |. 8B0C81 MOV ECX, DWORD PTR DS:[ECX+EAX*4]
008060E1 |. 338C95 70EEFFFF XOR ECX, DWORD PTR SS:[EBP+EDX*4-1190] ; 计算偏移量
008060E8 |. 890D 308F8200 MOV DWORD PTR DS:[828F30], ECX ; 存放,便于使用。
008060EE \. C3 RETN
008060EF > 66:813D 308F8200 8>CMP WORD PTR DS:[828F30], 0FF80 ; jmp类型中的长跳转中的正反方向判断代码
008060F8 . 0F8C 87000000 JL ezcddax.00806185
008060FE . 66:833D 308F8200 7>CMP WORD PTR DS:[828F30], 7F
00806106 . 7E 2B JLE SHORT ezcddax.00806133
00806108 . EB 7B JMP SHORT ezcddax.00806185
0080610A 90 NOP
0080610B 90 NOP
0080610C 90 NOP
0080610D 90 NOP
0080610E 90 NOP
0080610F 90 NOP
00806110 90 NOP
00806111 90 NOP
00806112 90 NOP
00806113 90 NOP
00806114 90 NOP
00806115 90 NOP
00806116 90 NOP
00806117 90 NOP
00806118 90 NOP
00806119 > 8B15 308F8200 MOV EDX, DWORD PTR DS:[828F30] ; 长跳转类型
0080611F . 2B15 208F8200 SUB EDX, DWORD PTR DS:[828F20]
00806125 . 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC]
0080612B . 8950 01 MOV DWORD PTR DS:[EAX+1], EDX ; 写入偏移量的地址是CC地址+1,因为长跳转是用双字节表示的
0080612E . E9 86000000 JMP ezcddax.008061B9
00806133 > 8B15 308F8200 MOV EDX, DWORD PTR DS:[828F30] ; 向上的jmp长跳转修复代码
00806139 . 2B15 208F8200 SUB EDX, DWORD PTR DS:[828F20]
0080613F . 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC]
00806145 . 4A DEC EDX
00806146 . 8910 MOV DWORD PTR DS:[EAX], EDX
00806148 . EB 6F JMP SHORT ezcddax.008061B9
0080614A 90 NOP
0080614B 90 NOP
0080614C 90 NOP
0080614D 90 NOP
0080614E 90 NOP
0080614F /$ 8B85 48EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B8] ; 把壳计算jump代码长度的一段修改成计算的函数
00806155 |. 8B0C85 D0F38300 MOV ECX, DWORD PTR DS:[EAX*4+83F3D0]
0080615C |. 8B95 74EBFFFF MOV EDX, DWORD PTR SS:[EBP-148C]
00806162 |. 33C0 XOR EAX, EAX
00806164 |. 8A0411 MOV AL, BYTE PTR DS:[ECX+EDX]
00806167 |. A2 208F8200 MOV BYTE PTR DS:[828F20], AL ; 取得的值存放,以便调用
0080616C \. C3 RETN
0080616D > 90 NOP
0080616E . 8B15 308F8200 MOV EDX, DWORD PTR DS:[828F30] ; 取偏移量,这个偏移量是从CC的下一个字节开始的
00806174 . 2B15 208F8200 SUB EDX, DWORD PTR DS:[828F20] ; 偏移量-jump代码长度=实际偏移量
0080617A . 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC] ; 取CC发生时的下一字节地址
00806180 . 8810 MOV BYTE PTR DS:[EAX], DL ; 写入实际偏移量,注意是单字节
00806182 . EB 35 JMP SHORT ezcddax.008061B9
00806184 90 NOP
00806185 > 8B15 308F8200 MOV EDX, DWORD PTR DS:[828F30] ; 向下的jmp长跳转修复代码
0080618B . 2B15 208F8200 SUB EDX, DWORD PTR DS:[828F20]
00806191 . 8B85 34ECFFFF MOV EAX, DWORD PTR SS:[EBP-13CC]
00806197 . 90 NOP
00806198 . 8910 MOV DWORD PTR DS:[EAX], EDX ; 注意写入的dword类型值
0080619A . 90 NOP
0080619B . 90 NOP
0080619C . 90 NOP
0080619D . 90 NOP
0080619E . 90 NOP
0080619F . 90 NOP
008061A0 . 90 NOP
008061A1 . 90 NOP
008061A2 . 90 NOP
008061A3 . 90 NOP
008061A4 . 90 NOP
008061A5 . 90 NOP
008061A6 . 90 NOP
008061A7 . 90 NOP
008061A8 . 90 NOP
008061A9 . 90 NOP
008061AA . 90 NOP
008061AB . 90 NOP
008061AC . 90 NOP
008061AD . 90 NOP
008061AE . 90 NOP
008061AF . 90 NOP
008061B0 . 90 NOP
008061B1 . 90 NOP
008061B2 . 90 NOP
008061B3 . 90 NOP
008061B4 . 90 NOP
008061B5 . 90 NOP
008061B6 . 90 NOP
008061B7 . 90 NOP
008061B8 . 90 NOP
008061B9 > 8305 108F8200 04 ADD DWORD PTR DS:[828F10], 4 ; 参数+1
008061C0 > 8B15 108F8200 MOV EDX, DWORD PTR DS:[828F10] ; ezcddax.00828000
008061C6 . 8B12 MOV EDX, DWORD PTR DS:[EDX]
008061C8 . 8995 34ECFFFF MOV DWORD PTR SS:[EBP-13CC], EDX
008061CE . 83FA 00 CMP EDX, 0
008061D1 .^ 74 E6 JE SHORT ezcddax.008061B9 ; 如果出现00000000,表示这个地址不是CC
008061D3 . 83FA FF CMP EDX, -1
008061D6 . 74 08 JE SHORT ezcddax.008061E0 ; 如果是ffffffff 表示修复结束。
008061D8 . 61 POPAD
008061D9 .^ E9 A5FCFFFF JMP ezcddax.00805E83
008061DE 90 NOP
008061DF 90 NOP
008061E0 > 90 NOP
008061E1 . 90 NOP
008061E2 . 90 NOP
008061E3 . 90 NOP
008061E4 . 90 NOP
008061E5 . 90 NOP
008061E6 . 90 NOP
008061E7 . 90 NOP
008061E8 . 90 NOP
008061E9 . 90 NOP
008061EA . 90 NOP
008061EB . 90 NOP
008061EC . 90 NOP
008061ED . 90 NOP
008061EE . 90 NOP
008061EF . 90 NOP
008061F0 . 90 NOP
008061F1 . 90 NOP
008061F2 . 90 NOP
008061F3 . 90 NOP
008061F4 . 90 NOP
008061F5 . 90 NOP
008061F6 . 90 NOP
008061F7 . 90 NOP
008061F8 . 90 NOP
008061F9 . 90 NOP
008061FA . 90 NOP
008061FB . 90 NOP
008061FC . 90 NOP
008061FD . 90 NOP
008061FE . 90 NOP
008061FF . 90 NOP
00806200 . 90 NOP
00806201 . 90 NOP
00806202 . 90 NOP
00806203 . 90 NOP
00806204 . 90 NOP
00806205 . 90 NOP
00806206 . 90 NOP
00806207 . 90 NOP
00806208 . 90 NOP
00806209 . 90 NOP
0080620A . 90 NOP
0080620B . 52 PUSH EDX ; /pContext
0080620C . 8B85 50EEFFFF MOV EAX, DWORD PTR SS:[EBP-11B0] ; |
00806212 . 50 PUSH EAX ; |hThread
00806213 . FF15 DC808300 CALL DWORD PTR DS:[<&KERNEL32.SetThreadCo>; \SetThreadContext
50 8B 8D 50 EE FF FF 51 FF 15 E0 80 83 00 90 90 52 8B 15 00 80 82 00 89 15 00 8F 82 00 C7 05 10
8F 82 00 00 80 82 00 5A 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 60 C7 85 78 EB FF FF 00 00 00 00 6A FF 6A 04
8D 95 34 EC FF FF 52 E8 EB 60 FD FF 83 C4 0C 89 85 4C EE FF FF 8B 85 4C EE FF FF 33 D2 B9 19 00
00 00 F7 F1 89 95 48 EE FF FF 8B 95 34 EC FF FF 52 8B 85 48 EE FF FF FF 14 85 98 CD 83 00 83 C4
04 89 85 78 EB FF FF C7 85 74 EB FF FF 00 00 00 00 8B 8D 48 EE FF FF 8B 14 8D 00 F3 83 00 89 95
54 EE FF FF 8B 85 74 EB FF FF 3B 85 54 EE FF FF 7D 5C 8B 85 54 EE FF FF 2B 85 74 EB FF FF 99 2B
C2 D1 F8 8B 8D 74 EB FF FF 03 C8 89 8D 70 EB FF FF 8B 95 48 EE FF FF 8B 04 95 7C F2 83 00 8B 8D
70 EB FF FF 8B 95 78 EB FF FF 3B 14 88 76 11 8B 85 70 EB FF FF 83 C0 01 89 85 74 EB FF FF EB 0C
8B 8D 70 EB FF FF 89 8D 54 EE FF FF EB 96 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 8B 95 48 EE FF FF 8B 04 95 7C F2 83
00 8B 8D 74 EB FF FF 8B 14 88 3B 95 78 EB FF FF 0F 85 0A 02 00 00 90 90 90 90 E8 97 01 00 00 90
90 90 90 90 90 E8 F9 00 00 00 80 3D 20 8F 82 00 04 7F 15 90 90 90 7C 35 8B 85 34 EC FF FF C6 40
FF E9 E9 0F 01 00 00 90 8B 85 34 EC FF FF C6 40 FF 0F 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 8B 85 48 EE FF FF 8B 0C 85 64 F3 83 00 8B 95 74 EB FF FF
8B 04 91 89 85 5C EB FF FF 8B 8D 3C EC FF FF 81 E1 D7 0F 00 00 89 8D 6C EB FF FF 8B 95 5C EB FF
FF 81 E2 00 00 00 FF C1 EA 18 89 95 60 EB FF FF 8B 85 5C EB FF FF 25 FF FF FF 00 89 85 64 EB FF
FF 8B 8D 28 EC FF FF 51 8B 95 6C EB FF FF 52 8B 85 64 EB FF FF 50 8B 8D 60 EB FF FF FF 14 8D 0C
88 83 00 83 C4 0C 89 85 68 EB FF FF 8B 95 68 EB FF FF 33 D2 80 3D 20 8F 82 00 04 0F 8C D3 00 00
00 7F 7D 74 51 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 E9 FD
00 00 00 8B 85 48 EE FF FF 8B 0C 85 18 F2 83 00 8B 85 74 EB FF FF 33 D2 BE 17 00 00 00 F7 F6 8B
85 74 EB FF FF 8B 0C 81 33 8C 95 70 EE FF FF 89 0D 30 8F 82 00 C3 66 81 3D 30 8F 82 00 80 FF 0F
8C 87 00 00 00 66 83 3D 30 8F 82 00 7F 7E 2B EB 7B 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
8B 15 30 8F 82 00 2B 15 20 8F 82 00 8B 85 34 EC FF FF 89 50 01 E9 86 00 00 00 8B 15 30 8F 82 00
2B 15 20 8F 82 00 8B 85 34 EC FF FF 4A 89 10 EB 6F 90 90 90 90 90 8B 85 48 EE FF FF 8B 0C 85 D0
F3 83 00 8B 95 74 EB FF FF 33 C0 8A 04 11 A2 20 8F 82 00 C3 90 8B 15 30 8F 82 00 2B 15 20 8F 82
00 8B 85 34 EC FF FF 88 10 EB 35 90 8B 15 30 8F 82 00 2B 15 20 8F 82 00 8B 85 34 EC FF FF 90 89
10 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
83 05 10 8F 82 00 04 8B 15 10 8F 82 00 8B 12 89 95 34 EC FF FF 83 FA 00 74 E6 83 FA FF 74 08 61
E9 A5 FC FF FF 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 52 8B 85 50 EE FF FF 50 FF 15 DC 80 83 00
跟着练习的可以复制上面的二进制代码,看看效果。剩下的就是搞定跳转类型并写入代码中就行了。
下面要修复的就是跳转类型了,这是整个修复工作中最烦人,最没有技术含量的工作了,下面就几个例子来看看如何修复。
调整好上面的代码,在修复完成的地址处下个中断,取消其他的所有断点,在下面的函数入口处下中断,运行。
例1----CC发生时地址:0043989E
DS:[00828004]=0043989E (ezcddax.0043989E)
EAX=00828004 (ezcddax.00828004)
007F2BEF 55 PUSH EBP
007F2BF0 8BEC MOV EBP, ESP
007F2BF2 83EC 40 SUB ESP, 40
007F2BF5 C745 D0 D800000>MOV DWORD PTR SS:[EBP-30], 0D8
007F2BFC C745 D4 2400000>MOV DWORD PTR SS:[EBP-2C], 24
007F2C03 C745 D8 E400000>MOV DWORD PTR SS:[EBP-28], 0E4
007F2C0A C745 DC A600000>MOV DWORD PTR SS:[EBP-24], 0A6
007F2C11 C745 E0 9400000>MOV DWORD PTR SS:[EBP-20], 94
007F2C18 C745 E4 2900000>MOV DWORD PTR SS:[EBP-1C], 29
007F2C1F C745 E8 2A00000>MOV DWORD PTR SS:[EBP-18], 2A
007F2C26 C745 EC F300000>MOV DWORD PTR SS:[EBP-14], 0F3
007F2C2D C745 F0 0700000>MOV DWORD PTR SS:[EBP-10], 7
007F2C34 C745 C0 0700000>MOV DWORD PTR SS:[EBP-40], 7
007F2C3B 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007F2C3E C1E8 07 SHR EAX, 7
007F2C41 83E0 07 AND EAX, 7
007F2C44 8B4C85 D0 MOV ECX, DWORD PTR SS:[EBP+EAX*4-30]
007F2C48 894D C4 MOV DWORD PTR SS:[EBP-3C], ECX
007F2C4B 8B45 C4 MOV EAX, DWORD PTR SS:[EBP-3C]
007F2C4E 99 CDQ
007F2C4F B9 19000000 MOV ECX, 19
007F2C54 F7F9 IDIV ECX
007F2C56 8945 CC MOV DWORD PTR SS:[EBP-34], EAX
007F2C59 8B45 C4 MOV EAX, DWORD PTR SS:[EBP-3C]
007F2C5C 99 CDQ
007F2C5D B9 19000000 MOV ECX, 19
007F2C62 F7F9 IDIV ECX
007F2C64 8955 C8 MOV DWORD PTR SS:[EBP-38], EDX
007F2C67 8B55 CC MOV EDX, DWORD PTR SS:[EBP-34]
007F2C6A 3B55 C8 CMP EDX, DWORD PTR SS:[EBP-38]
007F2C6D 75 11 JNZ SHORT ezcddax.007F2C80
007F2C6F 8B45 C8 MOV EAX, DWORD PTR SS:[EBP-38]
007F2C72 83C0 01 ADD EAX, 1
007F2C75 99 CDQ
007F2C76 B9 19000000 MOV ECX, 19
007F2C7B F7F9 IDIV ECX
007F2C7D 8955 C8 MOV DWORD PTR SS:[EBP-38], EDX
007F2C80 8B55 C4 MOV EDX, DWORD PTR SS:[EBP-3C]
007F2C83 8B45 CC MOV EAX, DWORD PTR SS:[EBP-34]
007F2C86 8B0C95 48E48300 MOV ECX, DWORD PTR DS:[EDX*4+83E448]
007F2C8D 330C85 CC828300 XOR ECX, DWORD PTR DS:[EAX*4+8382CC]
007F2C94 8B55 C8 MOV EDX, DWORD PTR SS:[EBP-38]
007F2C97 330C95 CC828300 XOR ECX, DWORD PTR DS:[EDX*4+8382CC]
007F2C9E 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007F2CA1 8B45 0C MOV EAX, DWORD PTR SS:[EBP+C]
007F2CA4 50 PUSH EAX
007F2CA5 8B4D C4 MOV ECX, DWORD PTR SS:[EBP-3C]
007F2CA8 0FBE91 88CC8300 MOVSX EDX, BYTE PTR DS:[ECX+83CC88]
007F2CAF FF1495 C0CB8300 CALL DWORD PTR DS:[EDX*4+83CBC0]
007F2CB6 83C4 04 ADD ESP, 4
007F2CB9 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007F2CBC 8B45 10 MOV EAX, DWORD PTR SS:[EBP+10]
007F2CBF 50 PUSH EAX
007F2CC0 8B4D FC MOV ECX, DWORD PTR SS:[EBP-4]
007F2CC3 51 PUSH ECX
007F2CC4 FF55 F8 CALL DWORD PTR SS:[EBP-8] ; ezcddax.007EB7A0
堆栈 SS:[0012DC5C]=007EB7A0 (ezcddax.007EB7A0)
007F2CC7 83C4 08 ADD ESP, 8
007F2CCA 50 PUSH EAX
007F2CCB 8B55 C4 MOV EDX, DWORD PTR SS:[EBP-3C]
007F2CCE 0FBE82 88CC8300 MOVSX EAX, BYTE PTR DS:[EDX+83CC88]
007F2CD5 FF1485 24CC8300 CALL DWORD PTR DS:[EAX*4+83CC24]
007F2CDC 83C4 04 ADD ESP, 4
007F2CDF 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007F2CE2 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C]
007F2CE5 83E0 01 AND EAX, 1
007F2CE8 8BE5 MOV ESP, EBP
007F2CEA 5D POP EBP
007F2CEB C3 RETN
007EB7A0 55 PUSH EBP
007EB7A1 8BEC MOV EBP, ESP
007EB7A3 83EC 0C SUB ESP, 0C
007EB7A6 53 PUSH EBX
007EB7A7 56 PUSH ESI
007EB7A8 57 PUSH EDI
007EB7A9 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EB7AC 50 PUSH EAX
007EB7AD FF15 24CC8300 CALL DWORD PTR DS:[83CC24] ; ezcddax.007DC062
007EB7B3 83C4 04 ADD ESP, 4
007EB7B6 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EB7B9 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EB7BC 51 PUSH ECX
007EB7BD B9 00080000 MOV ECX, 800
007EB7C2 B9 0A000000 MOV ECX, 0A
007EB7C7 F7D1 NOT ECX
007EB7C9 0FC8 BSWAP EAX
007EB7CB F7D1 NOT ECX
007EB7CD 41 INC ECX
007EB7CE 41 INC ECX
007EB7CF 41 INC ECX
007EB7D0 41 INC ECX
007EB7D1 41 INC ECX
007EB7D2 41 INC ECX
007EB7D3 41 INC ECX
007EB7D4 41 INC ECX
007EB7D5 41 INC ECX
007EB7D6 41 INC ECX
007EB7D7 41 INC ECX
007EB7D8 41 INC ECX
007EB7D9 41 INC ECX
007EB7DA 41 INC ECX
007EB7DB 41 INC ECX
007EB7DC 41 INC ECX
007EB7DD 41 INC ECX
007EB7DE 41 INC ECX
007EB7DF 41 INC ECX
007EB7E0 49 DEC ECX
007EB7E1 41 INC ECX
007EB7E2 FEC1 INC CL
007EB7E4 FEC1 INC CL
007EB7E6 FEC1 INC CL
007EB7E8 83C1 0D ADD ECX, 0D
007EB7EB FEC1 INC CL
007EB7ED FEC1 INC CL
007EB7EF FEC1 INC CL
007EB7F1 FEC1 INC CL
007EB7F3 FEC1 INC CL
007EB7F5 83C1 0A ADD ECX, 0A
007EB7F8 49 DEC ECX
007EB7F9 52 PUSH EDX
007EB7FA BA 04000000 MOV EDX, 4
007EB7FF 03CA ADD ECX, EDX
007EB801 41 INC ECX
007EB802 5A POP EDX
007EB803 0FC8 BSWAP EAX
007EB805 23C1 AND EAX, ECX
/////////////////////////////////////////////////
EBX=00000040
EAX=00000246
这句才是关键,EFLAGS寄存器值and 40
分析看看,十六进制的40是二进制值10000000 受影响的是第七位ZF位,测试条件是ZF=1
相关知识请看:http://www.pediy.com/tutorial/chap2/Chap2-3.htm
这样就可以判断这个跳转类型是jz/je 判断是短跳转就在CC地址写入类型的代码74;长跳转则在CC发生时的地址写入84
/////////////////////////////////////////////////
007EB807 59 POP ECX
007EB808 F7D8 NEG EAX
007EB80A 1BC0 SBB EAX, EAX
007EB80C F7D8 NEG EAX
/////////////////////////////////////////////////
测试ZF位是否为1
////////////////////////////////////////////////
007EB80E 5A POP EDX
007EB80F 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EB812 8B0D 94838300 MOV ECX, DWORD PTR DS:[838394]
007EB818 330D 98838300 XOR ECX, DWORD PTR DS:[838398]
007EB81E D1E1 SHL ECX, 1
007EB820 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EB823 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EB827 74 09 JE SHORT ezcddax.007EB832
007EB829 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EB82C 83CA 01 OR EDX, 1
007EB82F 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EB832 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EB835 50 PUSH EAX
007EB836 FF15 C0CB8300 CALL DWORD PTR DS:[83CBC0] ; ezcddax.007DBFB0
007EB83C 83C4 04 ADD ESP, 4
007EB83F 5F POP EDI
007EB840 5E POP ESI
007EB841 5B POP EBX
007EB842 8BE5 MOV ESP, EBP
007EB844 5D POP EBP
007EB845 C3 RETN
修改为:
007EB7A0 55 PUSH EBP
007EB7A1 8BEC MOV EBP, ESP
007EB7A3 83EC 0C SUB ESP, 0C
007EB7A6 53 PUSH EBX
007EB7A7 56 PUSH ESI
007EB7A8 57 PUSH EDI
007EB7A9 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EB7AC 50 PUSH EAX
007EB7AD FF15 24CC8300 CALL DWORD PTR DS:[83CC24] ; ezcddax.007DC062
007EB7B3 83C4 04 ADD ESP, 4
007EB7B6 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EB7B9 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
*******************************************************************************
{修改的代码是}
007EB7BC 90 NOP ; 下面是修改的代码
007EB7BD 90 NOP
007EB7BE 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10] ; 取CC发生时的地址
007EB7C4 8B00 MOV EAX, DWORD PTR DS:[EAX]
007EB7C6 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F ; 比较是不是长跳转标志
007EB7CA 74 06 JE SHORT ezcddax.007EB7D2 ; 短跳转写入
007EB7CC C640 FF 74 MOV BYTE PTR DS:[EAX-1], 74
007EB7D0 EB 20 JMP SHORT ezcddax.007EB7F2 ; 长跳转写入,注意是写在CC发生时的地址而不是CC地址
007EB7D2 C600 84 MOV BYTE PTR DS:[EAX], 84
007EB7D5 90 NOP
007EB7D6 33C0 XOR EAX, EAX
********************************************************************************
007EB7D8 90 NOP
007EB7D9 90 NOP
007EB7DA 90 NOP
007EB7DB 90 NOP
007EB7DC 90 NOP
007EB7DD 90 NOP
007EB7DE 90 NOP
007EB7DF 90 NOP
007EB7E0 90 NOP
007EB7E1 90 NOP
007EB7E2 90 NOP
007EB7E3 90 NOP
007EB7E4 90 NOP
007EB7E5 90 NOP
007EB7E6 90 NOP
007EB7E7 90 NOP
007EB7E8 90 NOP
007EB7E9 90 NOP
007EB7EA 90 NOP
007EB7EB 90 NOP
007EB7EC 90 NOP
007EB7ED 90 NOP
007EB7EE 90 NOP
007EB7EF 90 NOP
007EB7F0 90 NOP
007EB7F1 90 NOP
007EB7F2 90 NOP
007EB7F3 90 NOP
007EB7F4 90 NOP
007EB7F5 90 NOP
007EB7F6 90 NOP
007EB7F7 90 NOP
007EB7F8 90 NOP
007EB7F9 90 NOP
007EB7FA 90 NOP
007EB7FB 90 NOP
007EB7FC 90 NOP
007EB7FD 90 NOP
007EB7FE 90 NOP
007EB7FF 90 NOP
007EB800 90 NOP
007EB801 90 NOP
007EB802 90 NOP
007EB803 90 NOP
007EB804 90 NOP
007EB805 90 NOP
007EB806 90 NOP
007EB807 90 NOP
007EB808 90 NOP
007EB809 90 NOP
007EB80A 90 NOP
007EB80B 90 NOP
007EB80C 90 NOP
007EB80D 90 NOP
007EB80E 90 NOP
007EB80F 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EB812 8B0D 94838300 MOV ECX, DWORD PTR DS:[838394]
007EB818 330D 98838300 XOR ECX, DWORD PTR DS:[838398]
007EB81E D1E1 SHL ECX, 1
007EB820 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EB823 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EB827 74 09 JE SHORT ezcddax.007EB832
007EB829 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EB82C 83CA 01 OR EDX, 1
007EB82F 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EB832 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EB835 50 PUSH EAX
007EB836 FF15 C0CB8300 CALL DWORD PTR DS:[83CBC0] ; ezcddax.007DBFB0
007EB83C 83C4 04 ADD ESP, 4
007EB83F 5F POP EDI
007EB840 5E POP ESI
007EB841 5B POP EBX
007EB842 8BE5 MOV ESP, EBP
007EB844 5D POP EBP
007EB845 C3 RETN
55 8B EC 83 EC 0C 53 56 57 8B 45 08 50 FF 15 24 CC 83 00 83 C4 04 89 45 FC 8B 45 FC 90 90 36 A1
10 8F 82 00 8B 00 80 78 FF 0F 74 06 C6 40 FF 74 EB 20 C6 00 84 90 33 C0 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 89 45 F4 8B 0D 94 83 83 00 33 0D 98 83 83 00 D1 E1
89 4D F8 83 7D F4 00 74 09 8B 55 F8 83 CA 01 89 55 F8 8B 45 F8 50 FF 15 C0 CB 83 00 83 C4 04 5F
5E 5B 8B E5 5D C3
00439895 8B15 ECEB6C00 MOV EDX, DWORD PTR DS:[6CEBEC]
0043989B 85D2 TEST EDX, EDX
0043989D 0F84 AE030000 JE ezcddax.00439C51 //修复后的代码,是个长je类型
004398A3 66:C785 1CFDFFF>MOV WORD PTR SS:[EBP-2E4], 218
================================================================================================
例2:00439989
00806075 FF148D 0C888300 CALL DWORD PTR DS:[ECX*4+83880C] ; 模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口
入口:DS:[00838A54]=007F720B (ezcddax.007F720B),F7进入:
007F72E0 FF55 F8 CALL DWORD PTR SS:[EBP-8] ; 模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数真正入口
堆栈 SS:[0012DC5C]=007E6809 (ezcddax.007E6809)
入口是:=007E6809 F7再次进入:
007E6809 55 PUSH EBP
007E680A 8BEC MOV EBP, ESP
007E680C 83EC 0C SUB ESP, 0C
007E680F 53 PUSH EBX
007E6810 56 PUSH ESI
007E6811 57 PUSH EDI
007E6812 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E6815 50 PUSH EAX
007E6816 FF15 28CC8300 CALL DWORD PTR DS:[83CC28] ; ezcddax.007DC1BD
007E681C 83C4 04 ADD ESP, 4
007E681F 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E6822 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; 取Context域中EFLAGS寄存器值,看看壳怎么利用这个值,注意EAX
007E6825 53 PUSH EBX ; 取CC发生时的地址,注意这个地址是CC的下一个字节
007E6826 BB 80000000 MOV EBX, 80
007E682B EB 05 JMP SHORT ezcddax.007E6832
007E682D BB 04000000 MOV EBX, 4 ; 写入到CC地址中,所以要-1
007E6832 BB 32000000 MOV EBX, 32
007E6837 F7D3 NOT EBX
007E6839 0FC8 BSWAP EAX
007E683B F7D3 NOT EBX
007E683D 43 INC EBX
007E683E 43 INC EBX
007E683F 83C3 08 ADD EBX, 8
007E6842 4B DEC EBX
007E6843 51 PUSH ECX
007E6844 B9 04000000 MOV ECX, 4
007E6849 03D9 ADD EBX, ECX
007E684B 43 INC EBX
007E684C 59 POP ECX
007E684D 0FC8 BSWAP EAX
007E684F 23C3 AND EAX, EBX
//////////////////////////////////////////////////////////////////////
EBX=00000040
EAX=00000246
这句才是关键,EFLAGS寄存器值and 40
分析看看,十六进制的40是二进制值10000000 受影响的是第七位ZF位,测试条件是ZF=1
相关知识请看:http://www.pediy.com/tutorial/chap2/Chap2-3.htm
这样就可以判断这个跳转类型是jz/je 判断是短跳转就在CC地址写入类型的代码74;长跳转则在CC发生时的地址写入84
//////////////////////////////////////////////////////////////////////
007E6851 5B POP EBX
007E6852 F7D8 NEG EAX
007E6854 1BC0 SBB EAX, EAX
007E6856 F7D8 NEG EAX
/////////////////////////////////////////////////
测试ZF位是否为1
/////////////////////////////////////////////////
007E6858 5A POP EDX
007E6859 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E685C 8B0D 98838300 MOV ECX, DWORD PTR DS:[838398]
007E6862 330D 9C838300 XOR ECX, DWORD PTR DS:[83839C]
007E6868 D1E1 SHL ECX, 1
007E686A 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E686D 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E6871 74 09 JE SHORT ezcddax.007E687C
007E6873 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E6876 83CA 01 OR EDX, 1
007E6879 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E687C 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E687F 50 PUSH EAX
007E6880 FF15 C4CB8300 CALL DWORD PTR DS:[83CBC4] ; ezcddax.007DC114
007E6886 83C4 04 ADD ESP, 4
007E6889 5F POP EDI
007E688A 5E POP ESI
007E688B 5B POP EBX
007E688C 8BE5 MOV ESP, EBP
007E688E 5D POP EBP
007E688F C3 RETN
这是一个同例一的相同类型,所以直接修改代码为:
007E6809 55 PUSH EBP
007E680A 8BEC MOV EBP, ESP
007E680C 83EC 0C SUB ESP, 0C
007E680F 53 PUSH EBX
007E6810 56 PUSH ESI
007E6811 57 PUSH EDI
007E6812 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E6815 50 PUSH EAX
007E6816 FF15 28CC8300 CALL DWORD PTR DS:[83CC28] ; ezcddax.007DC1BD
007E681C 83C4 04 ADD ESP, 4
007E681F 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E6822 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; 取Context域中EFLAGS寄存器值,看看壳怎么利用这个值,注意EAX
007E6825 90 NOP ; 取CC发生时的地址,注意这个地址是CC的下一个字节
007E6826 E9 914F0000 JMP ezcddax.007EB7BC //跳到上一个修改的代码处理
007E682B 90 NOP
007E682C 90 NOP
007E682D 90 NOP
007E682E 90 NOP
007E682F 90 NOP
007E6830 90 NOP
007E6831 90 NOP
007E6832 90 NOP
007E6833 90 NOP
007E6834 90 NOP
007E6835 90 NOP
007E6836 90 NOP
007E6837 90 NOP
007E6838 90 NOP
007E6839 90 NOP
007E683A 90 NOP
007E683B 90 NOP
007E683C 90 NOP
007E683D 90 NOP
007E683E 90 NOP
007E683F 90 NOP
007E6840 90 NOP
007E6841 90 NOP
007E6842 90 NOP
007E6843 90 NOP
007E6844 90 NOP
007E6845 90 NOP
007E6846 90 NOP
007E6847 90 NOP
007E6848 90 NOP
007E6849 90 NOP
007E684A 90 NOP
007E684B 90 NOP
007E684C 90 NOP
007E684D 90 NOP
007E684E 90 NOP
007E684F 90 NOP
007E6850 90 NOP
007E6851 90 NOP
007E6852 90 NOP
007E6853 90 NOP
007E6854 90 NOP
007E6855 90 NOP
007E6856 90 NOP
007E6857 90 NOP
007E6858 90 NOP
007E6859 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E685C 8B0D 98838300 MOV ECX, DWORD PTR DS:[838398]
007E6862 330D 9C838300 XOR ECX, DWORD PTR DS:[83839C]
007E6868 D1E1 SHL ECX, 1
007E686A 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E686D 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E6871 74 09 JE SHORT ezcddax.007E687C
007E6873 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E6876 83CA 01 OR EDX, 1
007E6879 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E687C 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E687F 50 PUSH EAX
007E6880 FF15 C4CB8300 CALL DWORD PTR DS:[83CBC4] ; ezcddax.007DC114
007E6886 83C4 04 ADD ESP, 4
007E6889 5F POP EDI
007E688A 5E POP ESI
007E688B 5B POP EBX
007E688C 8BE5 MOV ESP, EBP
007E688E 5D POP EBP
007E688F C3 RETN
修复后的代码为:
0043995F 85C0 TEST EAX, EAX
00439961 74 13 JE SHORT ezcddax.00439976 //修复后的代码,是个断je类型
00439963 8B4D FC MOV ECX, DWORD PTR SS:[EBP-4]
00439966 8B81 E8070000 MOV EAX, DWORD PTR DS:[ECX+7E8]
0043996C 33D2 XOR EDX, EDX
0043996E 8B08 MOV ECX, DWORD PTR DS:[EAX]
例3:
00806075 FF148D 0C888300 CALL DWORD PTR DS:[ECX*4+83880C] ; 模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口
入口:DS:[00838B24]=007FA56D (ezcddax.007FA56D) F7进入:
007FA63F FF55 F8 CALL DWORD PTR SS:[EBP-8] ; ezcddax.007E381A
真正入口:SS:[0012DC5C]=007E381A (ezcddax.007E381A) F7进入:
007E381A /. 55 PUSH EBP
007E381B |. 8BEC MOV EBP, ESP
007E381D |. 83EC 0C SUB ESP, 0C
007E3820 |. 53 PUSH EBX
007E3821 |. 56 PUSH ESI
007E3822 |. 57 PUSH EDI
007E3823 |. 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E3826 |. 50 PUSH EAX ; /Arg1
007E3827 |. FF15 64CC8300 CALL DWORD PTR DS:[83CC64] ; \ezcddax.007DE435
007E382D |. 83C4 04 ADD ESP, 4
007E3830 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E3833 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; 取Context域中EFLAGS寄存器值
007E3836 |. 52 PUSH EDX
007E3837 |. BA FFFF0000 MOV EDX, 0FFFF
007E383C |. 23C2 AND EAX, EDX ; 取位
007E383E |. 53 PUSH EBX
007E383F |. 50 PUSH EAX ; 入栈
007E3840 |. B7 07 MOV BH, 7
007E3842 |. FECF DEC BH
007E3844 |. FECF DEC BH
007E3846 |. FECF DEC BH
007E3848 |. FECF DEC BH
007E384A |. FECF DEC BH
007E384C |. FECF DEC BH
007E384E |. FECF DEC BH
007E3850 |. 25 00080000 AND EAX, 800 ; 障眼法
007E3855 |. 0FC9 BSWAP ECX
007E3857 |. 58 POP EAX ; 出栈
007E3858 |. 0FC9 BSWAP ECX
007E385A |. 22E7 AND AH, BH ; 取位
007E385C |. B3 86 MOV BL, 86
007E385E |. 80EB 05 SUB BL, 5
007E3861 |. FECB DEC BL
007E3863 |. FECB DEC BL
007E3865 |. FECB DEC BL
007E3867 |. FECB DEC BL
007E3869 |. FECB DEC BL
007E386B |. FECB DEC BL
007E386D |. FECB DEC BL
007E386F |. 80EB 1A SUB BL, 1A
007E3872 |. FECB DEC BL
007E3874 |. 80EB 1F SUB BL, 1F
007E3877 |. 66:F7D3 NOT BX
007E387A |. 0FC8 BSWAP EAX
007E387C |. 66:F7D3 NOT BX
007E387F |. 0FC8 BSWAP EAX
007E3881 |. 22C3 AND AL, BL
//////////////////////////////////////////////////
; BL=40 ('@') AL=46 ('F')
这句才是关键,EFLAGS寄存器值and 40
分析看看,十六进制的40是二进制值10000000 受影响的是第七位ZF位,测试条件是ZF=0
相关知识请看:http://www.pediy.com/tutorial/chap2/Chap2-3.htm
这样就可以判断这个跳转类型是JNE/JNZ 短跳转在CC地址写入类型的代码75;长跳转在CC发生时地址写入85
///////////////////////////////////////////////////
007E3883 |. 8BC0 MOV EAX, EAX
007E3885 |. 5B POP EBX
007E3886 |. F7D8 NEG EAX
007E3888 |. 1BC0 SBB EAX, EAX
007E388A |. 40 INC EAX
/////////////////////////////////////////////////
测试ZF位是否为0
/////////////////////////////////////////////////
007E388B |. 5A POP EDX
007E388C |. 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E388F |. 8B0D D4838300 MOV ECX, DWORD PTR DS:[8383D4]
007E3895 |. 330D D8838300 XOR ECX, DWORD PTR DS:[8383D8]
007E389B |. D1E1 SHL ECX, 1
007E389D |. 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E38A0 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E38A4 |. 74 09 JE SHORT ezcddax.007E38AF
007E38A6 |. 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E38A9 |. 83CA 01 OR EDX, 1
007E38AC |. 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E38AF |> 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E38B2 |. 50 PUSH EAX ; /Arg1
007E38B3 |. FF15 00CC8300 CALL DWORD PTR DS:[83CC00] ; \ezcddax.007DE2C9
007E38B9 |. 83C4 04 ADD ESP, 4
007E38BC |. 5F POP EDI
007E38BD |. 5E POP ESI
007E38BE |. 5B POP EBX
007E38BF |. 8BE5 MOV ESP, EBP
007E38C1 |. 5D POP EBP
007E38C2 \. C3 RETN
修改为:
007E381A 55 PUSH EBP
007E381B 8BEC MOV EBP, ESP
007E381D 83EC 0C SUB ESP, 0C
007E3820 53 PUSH EBX
007E3821 56 PUSH ESI
007E3822 57 PUSH EDI
007E3823 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E3826 50 PUSH EAX
007E3827 FF15 64CC8300 CALL DWORD PTR DS:[83CC64] ; ezcddax.007DE435
007E382D 83C4 04 ADD ESP, 4
007E3830 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E3833 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; 取Context域中EFLAGS寄存器值
007E3836 90 NOP ; 取CC地址
007E3837 90 NOP
007E3838 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10]
007E383E 8B00 MOV EAX, DWORD PTR DS:[EAX] ; 取CC地址
007E3840 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F ; 比较是不是长跳转标志
007E3844 74 06 JE SHORT ezcddax.007E384C
007E3846 C640 FF 75 MOV BYTE PTR DS:[EAX-1], 75 ; 短跳转写入在CC地址
007E384A EB 20 JMP SHORT ezcddax.007E386C
007E384C C600 85 MOV BYTE PTR DS:[EAX], 85 ; 长跳转写入,注意是写在CC发生时的地址而不是CC地址
007E384F 90 NOP
007E3850 33C0 XOR EAX, EAX
007E3852 90 NOP
007E3853 90 NOP
007E3854 90 NOP
007E3855 90 NOP
007E3856 90 NOP
007E3857 90 NOP
007E3858 90 NOP
007E3859 90 NOP
007E385A 90 NOP
007E385B 90 NOP
007E385C 90 NOP
007E385D 90 NOP
007E385E 90 NOP
007E385F 90 NOP
007E3860 90 NOP
007E3861 90 NOP
007E3862 90 NOP
007E3863 90 NOP
007E3864 90 NOP
007E3865 90 NOP
007E3866 90 NOP
007E3867 90 NOP
007E3868 90 NOP
007E3869 90 NOP
007E386A 90 NOP
007E386B 90 NOP
007E386C 90 NOP
007E386D 90 NOP
007E386E 90 NOP
007E386F 90 NOP
007E3870 90 NOP
007E3871 90 NOP
007E3872 90 NOP
007E3873 90 NOP
007E3874 90 NOP
007E3875 90 NOP
007E3876 90 NOP
007E3877 90 NOP
007E3878 90 NOP
007E3879 90 NOP
007E387A 90 NOP
007E387B 90 NOP
007E387C 90 NOP
007E387D 90 NOP
007E387E 90 NOP
007E387F 90 NOP
007E3880 90 NOP
007E3881 90 NOP
007E3882 90 NOP
007E3883 90 NOP
007E3884 90 NOP
007E3885 90 NOP
007E3886 90 NOP
007E3887 90 NOP
007E3888 90 NOP
007E3889 90 NOP
007E388A 90 NOP
007E388B 90 NOP
007E388C 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E388F 8B0D D4838300 MOV ECX, DWORD PTR DS:[8383D4]
007E3895 330D D8838300 XOR ECX, DWORD PTR DS:[8383D8]
007E389B D1E1 SHL ECX, 1
007E389D 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E38A0 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E38A4 74 09 JE SHORT ezcddax.007E38AF
007E38A6 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E38A9 83CA 01 OR EDX, 1
007E38AC 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E38AF 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E38B2 50 PUSH EAX
007E38B3 FF15 00CC8300 CALL DWORD PTR DS:[83CC00] ; ezcddax.007DE2C9
007E38B9 83C4 04 ADD ESP, 4
007E38BC 5F POP EDI
007E38BD 5E POP ESI
007E38BE 5B POP EBX
007E38BF 8BE5 MOV ESP, EBP
007E38C1 5D POP EBP
007E38C2 C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JMP短跳转类型 一般是EAX and 0 然后 inc EAX 二进制代码:EB
007EB5BE 55 PUSH EBP
007EB5BF 8BEC MOV EBP, ESP
007EB5C1 83EC 0C SUB ESP, 0C
007EB5C4 53 PUSH EBX
007EB5C5 56 PUSH ESI
007EB5C6 57 PUSH EDI
007EB5C7 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EB5CA 50 PUSH EAX
007EB5CB FF15 74CC8300 CALL DWORD PTR DS:[83CC74] ; ezcddax.007DEEA0
007EB5D1 83C4 04 ADD ESP, 4
007EB5D4 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EB5D7 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EB5DA 90 NOP ; jmp 类型
007EB5DB 90 NOP
007EB5DC 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10]
007EB5E2 8B00 MOV EAX, DWORD PTR DS:[EAX]
007EB5E4 C640 FF EB MOV BYTE PTR DS:[EAX-1], 0EB ; 短跳转写入在CC地址,注意前面加0
007EB5E8 90 NOP
007EB5E9 90 NOP
007EB5EA 90 NOP
007EB5EB 90 NOP
007EB5EC 90 NOP
007EB5ED 90 NOP
007EB5EE 90 NOP
007EB5EF 90 NOP
007EB5F0 90 NOP
007EB5F1 90 NOP
007EB5F2 90 NOP
007EB5F3 90 NOP
007EB5F4 90 NOP
007EB5F5 90 NOP
007EB5F6 90 NOP
007EB5F7 90 NOP
007EB5F8 90 NOP
007EB5F9 90 NOP
007EB5FA 90 NOP
007EB5FB 90 NOP
007EB5FC 90 NOP
007EB5FD 90 NOP
007EB5FE 90 NOP
007EB5FF 90 NOP
007EB600 90 NOP
007EB601 90 NOP
007EB602 90 NOP
007EB603 90 NOP
007EB604 90 NOP
007EB605 90 NOP
007EB606 90 NOP
007EB607 90 NOP
007EB608 90 NOP
007EB609 90 NOP
007EB60A 90 NOP
007EB60B 90 NOP
007EB60C 90 NOP
007EB60D 90 NOP
007EB60E 90 NOP
007EB60F 90 NOP
007EB610 90 NOP
007EB611 90 NOP
007EB612 90 NOP
007EB613 90 NOP
007EB614 90 NOP
007EB615 90 NOP
007EB616 90 NOP
007EB617 90 NOP
007EB618 90 NOP
007EB619 90 NOP
007EB61A 90 NOP
007EB61B 90 NOP
007EB61C 90 NOP
007EB61D 90 NOP
007EB61E 90 NOP
007EB61F 90 NOP
007EB620 90 NOP
007EB621 90 NOP
007EB622 90 NOP
007EB623 90 NOP
007EB624 90 NOP
007EB625 90 NOP
007EB626 90 NOP
007EB627 90 NOP
007EB628 90 NOP
007EB629 90 NOP
007EB62A 90 NOP
007EB62B 90 NOP
007EB62C 90 NOP
007EB62D 90 NOP
007EB62E 90 NOP
007EB62F 90 NOP
007EB630 90 NOP
007EB631 90 NOP
007EB632 90 NOP
007EB633 90 NOP
007EB634 90 NOP
007EB635 90 NOP
007EB636 90 NOP
007EB637 90 NOP
007EB638 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EB63B 8B0D E4838300 MOV ECX, DWORD PTR DS:[8383E4]
007EB641 330D E8838300 XOR ECX, DWORD PTR DS:[8383E8]
007EB647 D1E1 SHL ECX, 1
007EB649 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EB64C 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EB650 74 09 JE SHORT ezcddax.007EB65B
007EB652 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EB655 83CA 01 OR EDX, 1
007EB658 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EB65B 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EB65E 50 PUSH EAX
007EB65F FF15 10CC8300 CALL DWORD PTR DS:[83CC10] ; ezcddax.007DED83
007EB665 83C4 04 ADD ESP, 4
007EB668 5F POP EDI
007EB669 5E POP ESI
007EB66A 5B POP EBX
007EB66B 8BE5 MOV ESP, EBP
007EB66D 5D POP EBP
007EB66E C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jnp类型 测试 PF=0 二进制代码:7B
007E989C 55 PUSH EBP
007E989D 8BEC MOV EBP, ESP
007E989F 83EC 0C SUB ESP, 0C
007E98A2 53 PUSH EBX
007E98A3 56 PUSH ESI
007E98A4 57 PUSH EDI
007E98A5 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E98A8 50 PUSH EAX
007E98A9 FF15 70CC8300 CALL DWORD PTR DS:[83CC70] ; ezcddax.007DEC1F
007E98AF 83C4 04 ADD ESP, 4
007E98B2 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E98B5 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E98B8 52 PUSH EDX
007E98B9 BA FFFF0000 MOV EDX, 0FFFF
007E98BE 23C2 AND EAX, EDX
007E98C0 53 PUSH EBX
007E98C1 68 10040000 PUSH 410
007E98C6 5B POP EBX
007E98C7 FECF DEC BH
007E98C9 FECF DEC BH
007E98CB 80EF FF SUB BH, 0FF
007E98CE 80EF 02 SUB BH, 2
007E98D1 FECF DEC BH
007E98D3 22E7 AND AH, BH
007E98D5 B3 0E MOV BL, 0E
007E98D7 80EB 04 SUB BL, 4
007E98DA FECB DEC BL
007E98DC 80EB 01 SUB BL, 1
007E98DF 80EB 01 SUB BL, 1
007E98E2 80EB 01 SUB BL, 1
007E98E5 80EB 01 SUB BL, 1
007E98E8 80EB 01 SUB BL, 1
007E98EB 22C3 AND AL, BL ; BL=04 AL=46
007E98ED 5B POP EBX
007E98EE 5A POP EDX
007E98EF 85C0 TEST EAX, EAX ; 测试PF位=0 是jnp
007E98F1 74 08 JE SHORT ezcddax.007E98FB
007E98F3 F7D0 NOT EAX
007E98F5 83C0 01 ADD EAX, 1
007E98F8 F9 STC
007E98F9 EB 06 JMP SHORT ezcddax.007E9901
007E98FB F7D0 NOT EAX
007E98FD 83C0 01 ADD EAX, 1
007E9900 F8 CLC
007E9901 1BC0 SBB EAX, EAX
007E9903 40 INC EAX
007E9904 48 DEC EAX
007E9905 70 09 JO SHORT ezcddax.007E9910
007E9907 7C 05 JL SHORT ezcddax.007E990E
007E9909 EB 07 JMP SHORT ezcddax.007E9912
007E990B 0F1226 MOVLPS XMM4, QWORD PTR DS:[ESI]
007E990E ^ 74 F9 JE SHORT ezcddax.007E9909
007E9910 ^ EB F7 JMP SHORT ezcddax.007E9909
007E9912 40 INC EAX
007E9913 48 DEC EAX
007E9914 70 09 JO SHORT ezcddax.007E991F
007E9916 7C 05 JL SHORT ezcddax.007E991D
007E9918 EB 07 JMP SHORT ezcddax.007E9921
007E991A 0F1226 MOVLPS XMM4, QWORD PTR DS:[ESI]
007E991D ^ 74 F9 JE SHORT ezcddax.007E9918
007E991F ^ EB F7 JMP SHORT ezcddax.007E9918
007E9921 40 INC EAX
007E9922 48 DEC EAX
007E9923 40 INC EAX
007E9924 48 DEC EAX
007E9925 70 07 JO SHORT ezcddax.007E992E
007E9927 7C 03 JL SHORT ezcddax.007E992C
007E9929 EB 05 JMP SHORT ezcddax.007E9930
007E992B C7 ??? ; 未知命令
007E992C ^ 74 FB JE SHORT ezcddax.007E9929
007E992E ^ EB F9 JMP SHORT ezcddax.007E9929
007E9930 40 INC EAX
007E9931 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E9934 8B0D E0838300 MOV ECX, DWORD PTR DS:[8383E0]
007E993A 330D E4838300 XOR ECX, DWORD PTR DS:[8383E4]
007E9940 D1E1 SHL ECX, 1
007E9942 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E9945 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E9949 74 09 JE SHORT ezcddax.007E9954
007E994B 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E994E 83CA 01 OR EDX, 1
007E9951 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E9954 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E9957 50 PUSH EAX
007E9958 FF15 0CCC8300 CALL DWORD PTR DS:[83CC0C] ; ezcddax.007DEABB
007E995E 83C4 04 ADD ESP, 4
007E9961 5F POP EDI
007E9962 5E POP ESI
007E9963 5B POP EBX
007E9964 8BE5 MOV ESP, EBP
007E9966 5D POP EBP
007E9967 C3 RETN
修改为:
007E989C 55 PUSH EBP
007E989D 8BEC MOV EBP, ESP
007E989F 83EC 0C SUB ESP, 0C
007E98A2 53 PUSH EBX
007E98A3 56 PUSH ESI
007E98A4 57 PUSH EDI
007E98A5 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E98A8 50 PUSH EAX
007E98A9 FF15 70CC8300 CALL DWORD PTR DS:[83CC70] ; ezcddax.007DEC1F
007E98AF 83C4 04 ADD ESP, 4
007E98B2 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E98B5 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E98B8 90 NOP
007E98B9 90 NOP
007E98BA 90 NOP
007E98BB 90 NOP
007E98BC 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10] ; 测试PF位=0 是jnp类型
007E98C2 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E98C4 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E98C8 74 06 JE SHORT ezcddax.007E98D0
007E98CA C640 FF 7B MOV BYTE PTR DS:[EAX-1], 7B
007E98CE EB 20 JMP SHORT ezcddax.007E98F0
007E98D0 C600 8B MOV BYTE PTR DS:[EAX], 8B
007E98D3 90 NOP
007E98D4 33C0 XOR EAX, EAX
007E98D6 90 NOP
007E98D7 90 NOP
007E98D8 90 NOP
007E98D9 90 NOP
007E98DA 90 NOP
007E98DB 90 NOP
007E98DC 90 NOP
007E98DD 90 NOP
007E98DE 90 NOP
007E98DF 90 NOP
007E98E0 90 NOP
007E98E1 90 NOP
007E98E2 90 NOP
007E98E3 90 NOP
007E98E4 90 NOP
007E98E5 90 NOP
007E98E6 90 NOP
007E98E7 90 NOP
007E98E8 90 NOP
007E98E9 90 NOP
007E98EA 90 NOP
007E98EB 90 NOP ; BL=04 AL=46
007E98EC 90 NOP
007E98ED 90 NOP
007E98EE 90 NOP
007E98EF 90 NOP ; 测试PF位=0 是jnp
007E98F0 90 NOP
007E98F1 90 NOP
007E98F2 90 NOP
007E98F3 90 NOP
007E98F4 90 NOP
007E98F5 90 NOP
007E98F6 90 NOP
007E98F7 90 NOP
007E98F8 90 NOP
007E98F9 90 NOP
007E98FA 90 NOP
007E98FB 90 NOP
007E98FC 90 NOP
007E98FD 90 NOP
007E98FE 90 NOP
007E98FF 90 NOP
007E9900 90 NOP
007E9901 90 NOP
007E9902 90 NOP
007E9903 90 NOP
007E9904 90 NOP
007E9905 90 NOP
007E9906 90 NOP
007E9907 90 NOP
007E9908 90 NOP
007E9909 90 NOP
007E990A 90 NOP
007E990B 90 NOP
007E990C 90 NOP
007E990D 90 NOP
007E990E 90 NOP
007E990F 90 NOP
007E9910 90 NOP
007E9911 90 NOP
007E9912 90 NOP
007E9913 90 NOP
007E9914 90 NOP
007E9915 90 NOP
007E9916 90 NOP
007E9917 90 NOP
007E9918 90 NOP
007E9919 90 NOP
007E991A 90 NOP
007E991B 90 NOP
007E991C 90 NOP
007E991D 90 NOP
007E991E 90 NOP
007E991F 90 NOP
007E9920 90 NOP
007E9921 90 NOP
007E9922 90 NOP
007E9923 90 NOP
007E9924 90 NOP
007E9925 90 NOP
007E9926 90 NOP
007E9927 90 NOP
007E9928 90 NOP
007E9929 90 NOP
007E992A 90 NOP
007E992B 90 NOP
007E992C 90 NOP
007E992D 90 NOP
007E992E 90 NOP
007E992F 90 NOP
007E9930 90 NOP
007E9931 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E9934 8B0D E0838300 MOV ECX, DWORD PTR DS:[8383E0]
007E993A 330D E4838300 XOR ECX, DWORD PTR DS:[8383E4]
007E9940 D1E1 SHL ECX, 1
007E9942 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E9945 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E9949 74 09 JE SHORT ezcddax.007E9954
007E994B 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E994E 83CA 01 OR EDX, 1
007E9951 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E9954 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E9957 50 PUSH EAX
007E9958 FF15 0CCC8300 CALL DWORD PTR DS:[83CC0C] ; ezcddax.007DEABB
007E995E 83C4 04 ADD ESP, 4
007E9961 5F POP EDI
007E9962 5E POP ESI
007E9963 5B POP EBX
007E9964 8BE5 MOV ESP, EBP
007E9966 5D POP EBP
007E9967 C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JA/JNBE(比较无符号数) 测试CF和ZF=0 二进制代码:77
007E7E91 55 PUSH EBP
007E7E92 8BEC MOV EBP, ESP
007E7E94 83EC 0C SUB ESP, 0C
007E7E97 53 PUSH EBX
007E7E98 56 PUSH ESI
007E7E99 57 PUSH EDI
007E7E9A 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E7E9D 50 PUSH EAX
007E7E9E FF15 44CC8300 CALL DWORD PTR DS:[83CC44] ; ezcddax.007DD15A
007E7EA4 83C4 04 ADD ESP, 4
007E7EA7 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E7EAA 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E7EAD 52 PUSH EDX
007E7EAE BA FFFF0000 MOV EDX, 0FFFF
007E7EB3 23C2 AND EAX, EDX
007E7EB5 53 PUSH EBX
007E7EB6 50 PUSH EAX
007E7EB7 B7 03 MOV BH, 3
007E7EB9 70 07 JO SHORT ezcddax.007E7EC2
007E7EBB 7C 03 JL SHORT ezcddax.007E7EC0
007E7EBD EB 05 JMP SHORT ezcddax.007E7EC4
007E7EBF - E9 74FBEBF9 JMP FA6A7A38
007E7EC4 FECF DEC BH
007E7EC6 FECF DEC BH
007E7EC8 FECF DEC BH
007E7ECA 25 00080000 AND EAX, 800
007E7ECF 0FC9 BSWAP ECX
007E7ED1 58 POP EAX
007E7ED2 0FC9 BSWAP ECX
007E7ED4 22E7 AND AH, BH
007E7ED6 B3 87 MOV BL, 87
007E7ED8 80EB 05 SUB BL, 5
007E7EDB FECB DEC BL
007E7EDD FECB DEC BL
007E7EDF FECB DEC BL
007E7EE1 FECB DEC BL
007E7EE3 FECB DEC BL
007E7EE5 FECB DEC BL
007E7EE7 FECB DEC BL
007E7EE9 FECB DEC BL
007E7EEB FECB DEC BL
007E7EED 80EB 1A SUB BL, 1A
007E7EF0 80EB 1E SUB BL, 1E
007E7EF3 66:F7D3 NOT BX
007E7EF6 0FC8 BSWAP EAX
007E7EF8 66:F7D3 NOT BX
007E7EFB 0FC8 BSWAP EAX
007E7EFD 70 07 JO SHORT ezcddax.007E7F06
007E7EFF 7C 03 JL SHORT ezcddax.007E7F04
007E7F01 EB 05 JMP SHORT ezcddax.007E7F08
007E7F03 - E9 74FBEBF9 JMP FA6A7A7C
007E7F08 22C3 AND AL, BL ; BL=41 ('A') AL=46
007E7F0A 8BC0 MOV EAX, EAX ; 测试CF和ZF=0,JA/JNBE(比较无符号数)类型
007E7F0C 5B POP EBX
007E7F0D F7D8 NEG EAX
007E7F0F 1BC0 SBB EAX, EAX
007E7F11 40 INC EAX
007E7F12 5A POP EDX
007E7F13 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E7F16 8B0D B4838300 MOV ECX, DWORD PTR DS:[8383B4]
007E7F1C 330D B8838300 XOR ECX, DWORD PTR DS:[8383B8]
007E7F22 D1E1 SHL ECX, 1
007E7F24 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E7F27 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E7F2B 74 09 JE SHORT ezcddax.007E7F36
007E7F2D 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E7F30 83CA 01 OR EDX, 1
007E7F33 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E7F36 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E7F39 50 PUSH EAX
007E7F3A FF15 E0CB8300 CALL DWORD PTR DS:[83CBE0] ; ezcddax.007DD0A5
007E7F40 83C4 04 ADD ESP, 4
007E7F43 5F POP EDI
007E7F44 5E POP ESI
007E7F45 5B POP EBX
007E7F46 8BE5 MOV ESP, EBP
007E7F48 5D POP EBP
007E7F49 C3 RETN
修改为:
007E7E91 55 PUSH EBP
007E7E92 8BEC MOV EBP, ESP
007E7E94 83EC 0C SUB ESP, 0C
007E7E97 53 PUSH EBX
007E7E98 56 PUSH ESI
007E7E99 57 PUSH EDI
007E7E9A 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E7E9D 50 PUSH EAX
007E7E9E FF15 44CC8300 CALL DWORD PTR DS:[83CC44] ; ezcddax.007DD15A
007E7EA4 83C4 04 ADD ESP, 4
007E7EA7 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E7EAA 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E7EAD 90 NOP
007E7EAE 90 NOP
007E7EAF 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10] ; 测试CF和ZF=0,JA/JNBE(比较无符号数)类型
007E7EB5 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E7EB7 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E7EBB 74 06 JE SHORT ezcddax.007E7EC3
007E7EBD C640 FF 77 MOV BYTE PTR DS:[EAX-1], 77
007E7EC1 EB 20 JMP SHORT ezcddax.007E7EE3
007E7EC3 C600 87 MOV BYTE PTR DS:[EAX], 87
007E7EC6 90 NOP
007E7EC7 33C0 XOR EAX, EAX
007E7EC9 90 NOP
007E7ECA 90 NOP
007E7ECB 90 NOP
007E7ECC 90 NOP
007E7ECD 90 NOP
007E7ECE 90 NOP
007E7ECF 90 NOP
007E7ED0 90 NOP
007E7ED1 90 NOP
007E7ED2 90 NOP
007E7ED3 90 NOP
007E7ED4 90 NOP
007E7ED5 90 NOP
007E7ED6 90 NOP
007E7ED7 90 NOP
007E7ED8 90 NOP
007E7ED9 90 NOP
007E7EDA 90 NOP
007E7EDB 90 NOP
007E7EDC 90 NOP
007E7EDD 90 NOP
007E7EDE 90 NOP
007E7EDF 90 NOP
007E7EE0 90 NOP
007E7EE1 90 NOP
007E7EE2 90 NOP
007E7EE3 90 NOP
007E7EE4 90 NOP
007E7EE5 90 NOP
007E7EE6 90 NOP
007E7EE7 90 NOP
007E7EE8 90 NOP
007E7EE9 90 NOP
007E7EEA 90 NOP
007E7EEB 90 NOP
007E7EEC 90 NOP
007E7EED 90 NOP
007E7EEE 90 NOP
007E7EEF 90 NOP
007E7EF0 90 NOP
007E7EF1 90 NOP
007E7EF2 90 NOP
007E7EF3 90 NOP
007E7EF4 90 NOP
007E7EF5 90 NOP
007E7EF6 90 NOP
007E7EF7 90 NOP
007E7EF8 90 NOP
007E7EF9 90 NOP
007E7EFA 90 NOP
007E7EFB 90 NOP
007E7EFC 90 NOP
007E7EFD 90 NOP
007E7EFE 90 NOP
007E7EFF 90 NOP
007E7F00 90 NOP
007E7F01 90 NOP
007E7F02 90 NOP
007E7F03 90 NOP
007E7F04 90 NOP
007E7F05 90 NOP
007E7F06 90 NOP
007E7F07 90 NOP
007E7F08 90 NOP ; BL=41 ('A') AL=46
007E7F09 90 NOP
007E7F0A 90 NOP ; 测试CF和ZF=0,JA/JNBE(比较无符号数)类型
007E7F0B 90 NOP
007E7F0C 90 NOP
007E7F0D 90 NOP
007E7F0E 90 NOP
007E7F0F 90 NOP
007E7F10 90 NOP
007E7F11 90 NOP
007E7F12 90 NOP
007E7F13 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E7F16 8B0D B4838300 MOV ECX, DWORD PTR DS:[8383B4]
007E7F1C 330D B8838300 XOR ECX, DWORD PTR DS:[8383B8]
007E7F22 D1E1 SHL ECX, 1
007E7F24 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E7F27 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E7F2B 74 09 JE SHORT ezcddax.007E7F36
007E7F2D 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E7F30 83CA 01 OR EDX, 1
007E7F33 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E7F36 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E7F39 50 PUSH EAX
007E7F3A FF15 E0CB8300 CALL DWORD PTR DS:[83CBE0] ; ezcddax.007DD0A5
007E7F40 83C4 04 ADD ESP, 4
007E7F43 5F POP EDI
007E7F44 5E POP ESI
007E7F45 5B POP EBX
007E7F46 8BE5 MOV ESP, EBP
007E7F48 5D POP EBP
007E7F49 C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JL/JNGE(比较带符号数)类型 测试 S异或O=1 二进制代码:7C
007E7311 55 PUSH EBP
007E7312 8BEC MOV EBP, ESP
007E7314 83EC 0C SUB ESP, 0C
007E7317 53 PUSH EBX
007E7318 56 PUSH ESI
007E7319 57 PUSH EDI
007E731A 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E731D 50 PUSH EAX
007E731E FF15 70CC8300 CALL DWORD PTR DS:[83CC70] ; ezcddax.007DEC1F
007E7324 83C4 04 ADD ESP, 4
007E7327 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E732A 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E732D 51 PUSH ECX
007E732E B9 00080000 MOV ECX, 800
007E7333 B9 40000000 MOV ECX, 40
007E7338 F7D1 NOT ECX
007E733A 0FC8 BSWAP EAX
007E733C F7D1 NOT ECX
007E733E 41 INC ECX
007E733F 41 INC ECX
007E7340 41 INC ECX
007E7341 41 INC ECX
007E7342 41 INC ECX
007E7343 83C1 0B ADD ECX, 0B
007E7346 41 INC ECX
007E7347 41 INC ECX
007E7348 41 INC ECX
007E7349 41 INC ECX
007E734A 41 INC ECX
007E734B 41 INC ECX
007E734C 41 INC ECX
007E734D 41 INC ECX
007E734E 41 INC ECX
007E734F 41 INC ECX
007E7350 49 DEC ECX
007E7351 41 INC ECX
007E7352 FEC1 INC CL
007E7354 FEC1 INC CL
007E7356 FEC1 INC CL
007E7358 83C1 0D ADD ECX, 0D
007E735B FEC1 INC CL
007E735D FEC1 INC CL
007E735F FEC1 INC CL
007E7361 FEC1 INC CL
007E7363 FEC1 INC CL
007E7365 83C1 0A ADD ECX, 0A
007E7368 49 DEC ECX
007E7369 52 PUSH EDX
007E736A BA 04000000 MOV EDX, 4
007E736F 03CA ADD ECX, EDX
007E7371 41 INC ECX
007E7372 5A POP EDX
007E7373 0FC8 BSWAP EAX
007E7375 83C1 03 ADD ECX, 3
007E7378 23C1 AND EAX, ECX ; ECX=00000080 EAX=00000246 测试SF位=0
007E737A 59 POP ECX
007E737B F7D8 NEG EAX
007E737D 1BC0 SBB EAX, EAX
007E737F 40 INC EAX
007E7380 5A POP EDX
007E7381 50 PUSH EAX
007E7382 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E7385 BA 000F0000 MOV EDX, 0F00
007E738A 80EE 01 SUB DH, 1
007E738D FECE DEC DH
007E738F FECE DEC DH
007E7391 FECE DEC DH
007E7393 FECE DEC DH
007E7395 FECE DEC DH
007E7397 FECE DEC DH
007E7399 23C2 AND EAX, EDX ; EDX=00000800 测试OF位=1
007E739B F7D8 NEG EAX
007E739D 1BC0 SBB EAX, EAX
007E739F 40 INC EAX
007E73A0 8BD0 MOV EDX, EAX
007E73A2 58 POP EAX
007E73A3 33C9 XOR ECX, ECX
007E73A5 70 07 JO SHORT ezcddax.007E73AE
007E73A7 7C 03 JL SHORT ezcddax.007E73AC
007E73A9 EB 05 JMP SHORT ezcddax.007E73B0
007E73AB C7 ??? ; 未知命令
007E73AC ^ 74 FB JE SHORT ezcddax.007E73A9
007E73AE ^ EB F9 JMP SHORT ezcddax.007E73A9
007E73B0 3BC2 CMP EAX, EDX ; S异或O=1 JL/JNGE(比较带符号数)类型
007E73B2 70 07 JO SHORT ezcddax.007E73BB
007E73B4 7C 03 JL SHORT ezcddax.007E73B9
007E73B6 EB 05 JMP SHORT ezcddax.007E73BD
007E73B8 C7 ??? ; 未知命令
007E73B9 ^ 74 FB JE SHORT ezcddax.007E73B6
007E73BB ^ EB F9 JMP SHORT ezcddax.007E73B6
007E73BD 74 11 JE SHORT ezcddax.007E73D0
007E73BF 83E0 00 AND EAX, 0
007E73C2 70 07 JO SHORT ezcddax.007E73CB
007E73C4 7C 03 JL SHORT ezcddax.007E73C9
007E73C6 EB 05 JMP SHORT ezcddax.007E73CD
007E73C8 C7 ??? ; 未知命令
007E73C9 ^ 74 FB JE SHORT ezcddax.007E73C6
007E73CB ^ EB F9 JMP SHORT ezcddax.007E73C6
007E73CD 40 INC EAX
007E73CE EB 03 JMP SHORT ezcddax.007E73D3
007E73D0 83E0 00 AND EAX, 0
007E73D3 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E73D6 8B0D E0838300 MOV ECX, DWORD PTR DS:[8383E0]
007E73DC 330D E4838300 XOR ECX, DWORD PTR DS:[8383E4]
007E73E2 D1E1 SHL ECX, 1
007E73E4 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E73E7 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E73EB 74 09 JE SHORT ezcddax.007E73F6
007E73ED 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E73F0 83CA 01 OR EDX, 1
007E73F3 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E73F6 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E73F9 50 PUSH EAX
007E73FA FF15 0CCC8300 CALL DWORD PTR DS:[83CC0C] ; ezcddax.007DEABB
007E7400 83C4 04 ADD ESP, 4
007E7403 5F POP EDI
007E7404 5E POP ESI
007E7405 5B POP EBX
007E7406 8BE5 MOV ESP, EBP
007E7408 5D POP EBP
007E7409 C3 RETN
修改为:
007E7311 55 PUSH EBP
007E7312 8BEC MOV EBP, ESP
007E7314 83EC 0C SUB ESP, 0C
007E7317 53 PUSH EBX
007E7318 56 PUSH ESI
007E7319 57 PUSH EDI
007E731A 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E731D 50 PUSH EAX
007E731E FF15 70CC8300 CALL DWORD PTR DS:[83CC70] ; ezcddax.007DEC1F
007E7324 83C4 04 ADD ESP, 4
007E7327 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E732A 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E732D 90 NOP
007E732E 90 NOP
007E732F 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10] ; S异或O=1 JL/JNGE(比较带符号数)类型
007E7335 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E7337 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E733B 74 06 JE SHORT ezcddax.007E7343
007E733D C640 FF 7C MOV BYTE PTR DS:[EAX-1], 7C
007E7341 EB 20 JMP SHORT ezcddax.007E7363
007E7343 C600 8C MOV BYTE PTR DS:[EAX], 8C
007E7346 90 NOP
007E7347 33C0 XOR EAX, EAX
007E7349 90 NOP
007E734A 90 NOP
007E734B 90 NOP
007E734C 90 NOP
007E734D 90 NOP
007E734E 90 NOP
007E734F 90 NOP
007E7350 90 NOP
007E7351 90 NOP
007E7352 90 NOP
007E7353 90 NOP
007E7354 90 NOP
007E7355 90 NOP
007E7356 90 NOP
007E7357 90 NOP
007E7358 90 NOP
007E7359 90 NOP
007E735A 90 NOP
007E735B 90 NOP
007E735C 90 NOP
007E735D 90 NOP
007E735E 90 NOP
007E735F 90 NOP
007E7360 90 NOP
007E7361 90 NOP
007E7362 90 NOP
007E7363 90 NOP
007E7364 90 NOP
007E7365 90 NOP
007E7366 90 NOP
007E7367 90 NOP
007E7368 90 NOP
007E7369 90 NOP
007E736A 90 NOP
007E736B 90 NOP
007E736C 90 NOP
007E736D 90 NOP
007E736E 90 NOP
007E736F 90 NOP
007E7370 90 NOP
007E7371 90 NOP
007E7372 90 NOP
007E7373 90 NOP
007E7374 90 NOP
007E7375 90 NOP
007E7376 90 NOP
007E7377 90 NOP
007E7378 90 NOP ; ECX=00000080 EAX=00000246 测试SF位=0
007E7379 90 NOP
007E737A 90 NOP
007E737B 90 NOP
007E737C 90 NOP
007E737D 90 NOP
007E737E 90 NOP
007E737F 90 NOP
007E7380 90 NOP
007E7381 90 NOP
007E7382 90 NOP
007E7383 90 NOP
007E7384 90 NOP
007E7385 90 NOP
007E7386 90 NOP
007E7387 90 NOP
007E7388 90 NOP
007E7389 90 NOP
007E738A 90 NOP
007E738B 90 NOP
007E738C 90 NOP
007E738D 90 NOP
007E738E 90 NOP
007E738F 90 NOP
007E7390 90 NOP
007E7391 90 NOP
007E7392 90 NOP
007E7393 90 NOP
007E7394 90 NOP
007E7395 90 NOP
007E7396 90 NOP
007E7397 90 NOP
007E7398 90 NOP
007E7399 90 NOP ; EDX=00000800 测试OF位=1
007E739A 90 NOP
007E739B 90 NOP
007E739C 90 NOP
007E739D 90 NOP
007E739E 90 NOP
007E739F 90 NOP
007E73A0 90 NOP
007E73A1 90 NOP
007E73A2 90 NOP
007E73A3 90 NOP
007E73A4 90 NOP
007E73A5 90 NOP
007E73A6 90 NOP
007E73A7 90 NOP
007E73A8 90 NOP
007E73A9 90 NOP
007E73AA 90 NOP
007E73AB 90 NOP
007E73AC 90 NOP
007E73AD 90 NOP
007E73AE 90 NOP
007E73AF 90 NOP
007E73B0 90 NOP ; S异或O=1 JL/JNGE(比较带符号数)类型
007E73B1 90 NOP
007E73B2 90 NOP
007E73B3 90 NOP
007E73B4 90 NOP
007E73B5 90 NOP
007E73B6 90 NOP
007E73B7 90 NOP
007E73B8 90 NOP
007E73B9 90 NOP
007E73BA 90 NOP
007E73BB 90 NOP
007E73BC 90 NOP
007E73BD 90 NOP
007E73BE 90 NOP
007E73BF 90 NOP
007E73C0 90 NOP
007E73C1 90 NOP
007E73C2 90 NOP
007E73C3 90 NOP
007E73C4 90 NOP
007E73C5 90 NOP
007E73C6 90 NOP
007E73C7 90 NOP
007E73C8 90 NOP
007E73C9 90 NOP
007E73CA 90 NOP
007E73CB 90 NOP
007E73CC 90 NOP
007E73CD 90 NOP
007E73CE 90 NOP
007E73CF 90 NOP
007E73D0 90 NOP
007E73D1 90 NOP
007E73D2 90 NOP
007E73D3 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E73D6 8B0D E0838300 MOV ECX, DWORD PTR DS:[8383E0]
007E73DC 330D E4838300 XOR ECX, DWORD PTR DS:[8383E4]
007E73E2 D1E1 SHL ECX, 1
007E73E4 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E73E7 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E73EB 74 09 JE SHORT ezcddax.007E73F6
007E73ED 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E73F0 83CA 01 OR EDX, 1
007E73F3 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E73F6 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E73F9 50 PUSH EAX
007E73FA FF15 0CCC8300 CALL DWORD PTR DS:[83CC0C] ; ezcddax.007DEABB
007E7400 83C4 04 ADD ESP, 4
007E7403 5F POP EDI
007E7404 5E POP ESI
007E7405 5B POP EBX
007E7406 8BE5 MOV ESP, EBP
007E7408 5D POP EBP
007E7409 C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JLE/JNG(比较带符号数) 测试 (S异或O)或Z=1 二进制代码:7E
007E55E0 55 PUSH EBP
007E55E1 8BEC MOV EBP, ESP
007E55E3 83EC 0C SUB ESP, 0C
007E55E6 53 PUSH EBX
007E55E7 56 PUSH ESI
007E55E8 57 PUSH EDI
007E55E9 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E55EC 50 PUSH EAX
007E55ED FF15 6CCC8300 CALL DWORD PTR DS:[83CC6C] ; ezcddax.007DE959
007E55F3 83C4 04 ADD ESP, 4
007E55F6 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E55F9 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E55FC 53 PUSH EBX
007E55FD 8B5D 0C MOV EBX, DWORD PTR SS:[EBP+C]
007E5600 BB FFFF0000 MOV EBX, 0FFFF
007E5605 23C3 AND EAX, EBX
007E5607 51 PUSH ECX
007E5608 B5 2C MOV CH, 2C
007E560A 80ED 01 SUB CH, 1
007E560D 80ED 20 SUB CH, 20
007E5610 FECD DEC CH
007E5612 FECD DEC CH
007E5614 80ED 04 SUB CH, 4
007E5617 FECD DEC CH
007E5619 80ED 03 SUB CH, 3
007E561C FECD DEC CH
007E561E 22E5 AND AH, CH
007E5620 B1 70 MOV CL, 70
007E5622 80E9 02 SUB CL, 2
007E5625 FEC9 DEC CL
007E5627 FEC9 DEC CL
007E5629 FEC9 DEC CL
007E562B 80E9 06 SUB CL, 6
007E562E F6D0 NOT AL
007E5630 0FC9 BSWAP ECX
007E5632 F6D0 NOT AL
007E5634 0FC9 BSWAP ECX
007E5636 FEC9 DEC CL
007E5638 FEC9 DEC CL
007E563A 80E9 10 SUB CL, 10
007E563D FEC9 DEC CL
007E563F FEC9 DEC CL
007E5641 80C1 0C ADD CL, 0C
007E5644 FEC9 DEC CL
007E5646 FEC9 DEC CL
007E5648 FEC9 DEC CL
007E564A 70 07 JO SHORT ezcddax.007E5653
007E564C 7C 03 JL SHORT ezcddax.007E5651
007E564E EB 05 JMP SHORT ezcddax.007E5655
007E5650 C7 ??? ; 未知命令
007E5651 ^ 74 FB JE SHORT ezcddax.007E564E
007E5653 ^ EB F9 JMP SHORT ezcddax.007E564E
007E5655 FEC9 DEC CL
007E5657 FEC9 DEC CL
007E5659 FEC9 DEC CL
007E565B FEC9 DEC CL
007E565D 80E9 10 SUB CL, 10
007E5660 80E9 01 SUB CL, 1
007E5663 FEC9 DEC CL
007E5665 FEC9 DEC CL
007E5667 FEC9 DEC CL
007E5669 FEC9 DEC CL
007E566B FEC9 DEC CL
007E566D FEC9 DEC CL
007E566F FEC9 DEC CL
007E5671 FEC9 DEC CL
007E5673 F7D1 NOT ECX
007E5675 0FC8 BSWAP EAX
007E5677 F7D1 NOT ECX
007E5679 0FC8 BSWAP EAX
007E567B FEC1 INC CL
007E567D 80C1 02 ADD CL, 2
007E5680 22C1 AND AL, CL ; CL=40 ('@')
007E5682 8BC0 MOV EAX, EAX
007E5684 59 POP ECX
007E5685 5B POP EBX
007E5686 85C0 TEST EAX, EAX ; 测试ZF=1
007E5688 0F85 D6000000 JNZ ezcddax.007E5764
007E568E 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E5691 70 07 JO SHORT ezcddax.007E569A
007E5693 7C 03 JL SHORT ezcddax.007E5698
007E5695 EB 05 JMP SHORT ezcddax.007E569C
007E5697 C7 ??? ; 未知命令
007E5698 ^ 74 FB JE SHORT ezcddax.007E5695
007E569A ^ EB F9 JMP SHORT ezcddax.007E5695
007E569C 52 PUSH EDX
007E569D BA FFFF0000 MOV EDX, 0FFFF
007E56A2 23C2 AND EAX, EDX
007E56A4 53 PUSH EBX
007E56A5 50 PUSH EAX
007E56A6 B7 07 MOV BH, 7
007E56A8 FECF DEC BH
007E56AA FECF DEC BH
007E56AC FECF DEC BH
007E56AE FECF DEC BH
007E56B0 FECF DEC BH
007E56B2 FECF DEC BH
007E56B4 FECF DEC BH
007E56B6 25 00080000 AND EAX, 800
007E56BB 0FC9 BSWAP ECX
007E56BD 58 POP EAX
007E56BE 0FC9 BSWAP ECX
007E56C0 22E7 AND AH, BH
007E56C2 B3 C6 MOV BL, 0C6
007E56C4 80EB 05 SUB BL, 5
007E56C7 FECB DEC BL
007E56C9 FECB DEC BL
007E56CB FECB DEC BL
007E56CD 80EB 04 SUB BL, 4
007E56D0 80EB 1A SUB BL, 1A
007E56D3 FECB DEC BL
007E56D5 80EB 1F SUB BL, 1F
007E56D8 66:F7D3 NOT BX
007E56DB 0FC8 BSWAP EAX
007E56DD 66:F7D3 NOT BX
007E56E0 0FC8 BSWAP EAX
007E56E2 22C3 AND AL, BL ; BL=80 测试SF=1
007E56E4 8BC0 MOV EAX, EAX
007E56E6 5B POP EBX
007E56E7 F7D8 NEG EAX
007E56E9 1BC0 SBB EAX, EAX
007E56EB 40 INC EAX
007E56EC 5A POP EDX
007E56ED 8BC8 MOV ECX, EAX
007E56EF 51 PUSH ECX
007E56F0 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E56F3 52 PUSH EDX
007E56F4 BA FFFF0000 MOV EDX, 0FFFF
007E56F9 23C2 AND EAX, EDX
007E56FB 53 PUSH EBX
007E56FC 6A 1F PUSH 1F
007E56FE 5B POP EBX
007E56FF 80EB 05 SUB BL, 5
007E5702 FECB DEC BL
007E5704 50 PUSH EAX
007E5705 FECB DEC BL
007E5707 FECB DEC BL
007E5709 83E0 40 AND EAX, 40
007E570C FECB DEC BL
007E570E 80EB 12 SUB BL, 12
007E5711 80EB 03 SUB BL, 3
007E5714 58 POP EAX
007E5715 FECB DEC BL
007E5717 22C3 AND AL, BL
007E5719 BA 00120000 MOV EDX, 1200
007E571E FECE DEC DH
007E5720 80EE 01 SUB DH, 1
007E5723 FECE DEC DH
007E5725 80EE 07 SUB DH, 7
007E5728 22E6 AND AH, DH ; DH=08 (Backspace) 测试OF=
007E572A 5B POP EBX
007E572B 5A POP EDX
007E572C F7D8 NEG EAX
007E572E 1BC0 SBB EAX, EAX
007E5730 40 INC EAX
007E5731 48 DEC EAX
007E5732 70 07 JO SHORT ezcddax.007E573B
007E5734 7C 03 JL SHORT ezcddax.007E5739
007E5736 EB 05 JMP SHORT ezcddax.007E573D
007E5738 C7 ??? ; 未知命令
007E5739 ^ 74 FB JE SHORT ezcddax.007E5736
007E573B ^ EB F9 JMP SHORT ezcddax.007E5736
007E573D 40 INC EAX
007E573E 48 DEC EAX
007E573F 70 07 JO SHORT ezcddax.007E5748
007E5741 7C 03 JL SHORT ezcddax.007E5746
007E5743 EB 05 JMP SHORT ezcddax.007E574A
007E5745 C7 ??? ; 未知命令
007E5746 ^ 74 FB JE SHORT ezcddax.007E5743
007E5748 ^ EB F9 JMP SHORT ezcddax.007E5743
007E574A 40 INC EAX
007E574B 48 DEC EAX
007E574C 40 INC EAX
007E574D 48 DEC EAX
007E574E 70 07 JO SHORT ezcddax.007E5757
007E5750 7C 03 JL SHORT ezcddax.007E5755
007E5752 EB 05 JMP SHORT ezcddax.007E5759
007E5754 C7 ??? ; 未知命令
007E5755 ^ 74 FB JE SHORT ezcddax.007E5752
007E5757 ^ EB F9 JMP SHORT ezcddax.007E5752
007E5759 40 INC EAX
007E575A 59 POP ECX
007E575B 3BC8 CMP ECX, EAX ; D测试OF=1 SF=1
007E575D 75 05 JNZ SHORT ezcddax.007E5764
007E575F 83E0 00 AND EAX, 0
007E5762 EB 04 JMP SHORT ezcddax.007E5768
007E5764 83E0 00 AND EAX, 0
007E5767 40 INC EAX ; (S异或O)或Z=1 JLE/JNG(比较带符号数)是类型
007E5768 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E576B 8B0D DC838300 MOV ECX, DWORD PTR DS:[8383DC]
007E5771 330D E0838300 XOR ECX, DWORD PTR DS:[8383E0]
007E5777 D1E1 SHL ECX, 1
007E5779 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E577C 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E5780 74 09 JE SHORT ezcddax.007E578B
007E5782 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E5785 83CA 01 OR EDX, 1
007E5788 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E578B 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E578E 50 PUSH EAX
007E578F FF15 08CC8300 CALL DWORD PTR DS:[83CC08] ; ezcddax.007DE7F5
007E5795 83C4 04 ADD ESP, 4
007E5798 5F POP EDI
007E5799 5E POP ESI
007E579A 5B POP EBX
007E579B 8BE5 MOV ESP, EBP
007E579D 5D POP EBP
007E579E C3 RETN
修改为:
007E55E0 55 PUSH EBP
007E55E1 8BEC MOV EBP, ESP
007E55E3 83EC 0C SUB ESP, 0C
007E55E6 53 PUSH EBX
007E55E7 56 PUSH ESI
007E55E8 57 PUSH EDI
007E55E9 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E55EC 50 PUSH EAX
007E55ED FF15 6CCC8300 CALL DWORD PTR DS:[83CC6C] ; ezcddax.007DE959
007E55F3 83C4 04 ADD ESP, 4
007E55F6 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E55F9 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E55FC 90 NOP
007E55FD 90 NOP
007E55FE 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10]
007E5604 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E5606 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E560A 74 06 JE SHORT ezcddax.007E5612
007E560C C640 FF 7E MOV BYTE PTR DS:[EAX-1], 7E
007E5610 EB 20 JMP SHORT ezcddax.007E5632
007E5612 C600 8E MOV BYTE PTR DS:[EAX], 8E
007E5615 90 NOP
007E5616 33C0 XOR EAX, EAX
007E5618 90 NOP
007E5619 90 NOP
007E561A 90 NOP
007E561B 90 NOP
007E561C 90 NOP
007E561D 90 NOP
007E561E 90 NOP
007E561F 90 NOP
007E5620 90 NOP
007E5621 90 NOP
007E5622 90 NOP
007E5623 90 NOP
007E5624 90 NOP
007E5625 90 NOP
007E5626 90 NOP
007E5627 90 NOP
007E5628 90 NOP
007E5629 90 NOP
007E562A 90 NOP
007E562B 90 NOP
007E562C 90 NOP
007E562D 90 NOP
007E562E 90 NOP
007E562F 90 NOP
007E5630 90 NOP
007E5631 90 NOP
007E5632 90 NOP
007E5633 90 NOP
007E5634 90 NOP
007E5635 90 NOP
007E5636 90 NOP
007E5637 90 NOP
007E5638 90 NOP
007E5639 90 NOP
007E563A 90 NOP
007E563B 90 NOP
007E563C 90 NOP
007E563D 90 NOP
007E563E 90 NOP
007E563F 90 NOP
007E5640 90 NOP
007E5641 90 NOP
007E5642 90 NOP
007E5643 90 NOP
007E5644 90 NOP
007E5645 90 NOP
007E5646 90 NOP
007E5647 90 NOP
007E5648 90 NOP
007E5649 90 NOP
007E564A 90 NOP
007E564B 90 NOP
007E564C 90 NOP
007E564D 90 NOP
007E564E 90 NOP
007E564F 90 NOP
007E5650 90 NOP
007E5651 90 NOP
007E5652 90 NOP
007E5653 90 NOP
007E5654 90 NOP
007E5655 90 NOP
007E5656 90 NOP
007E5657 90 NOP
007E5658 90 NOP
007E5659 90 NOP
007E565A 90 NOP
007E565B 90 NOP
007E565C 90 NOP
007E565D 90 NOP
007E565E 90 NOP
007E565F 90 NOP
007E5660 90 NOP
007E5661 90 NOP
007E5662 90 NOP
007E5663 90 NOP
007E5664 90 NOP
007E5665 90 NOP
007E5666 90 NOP
007E5667 90 NOP
007E5668 90 NOP
007E5669 90 NOP
007E566A 90 NOP
007E566B 90 NOP
007E566C 90 NOP
007E566D 90 NOP
007E566E 90 NOP
007E566F 90 NOP
007E5670 90 NOP
007E5671 90 NOP
007E5672 90 NOP
007E5673 90 NOP
007E5674 90 NOP
007E5675 90 NOP
007E5676 90 NOP
007E5677 90 NOP
007E5678 90 NOP
007E5679 90 NOP
007E567A 90 NOP
007E567B 90 NOP
007E567C 90 NOP
007E567D 90 NOP
007E567E 90 NOP
007E567F 90 NOP
007E5680 90 NOP ; CL=40 ('@')
007E5681 90 NOP
007E5682 90 NOP
007E5683 90 NOP
007E5684 90 NOP
007E5685 90 NOP
007E5686 90 NOP ; 测试ZF=1
007E5687 90 NOP
007E5688 90 NOP
007E5689 90 NOP
007E568A 90 NOP
007E568B 90 NOP
007E568C 90 NOP
007E568D 90 NOP
007E568E 90 NOP
007E568F 90 NOP
007E5690 90 NOP
007E5691 90 NOP
007E5692 90 NOP
007E5693 90 NOP
007E5694 90 NOP
007E5695 90 NOP
007E5696 90 NOP
007E5697 90 NOP
007E5698 90 NOP
007E5699 90 NOP
007E569A 90 NOP
007E569B 90 NOP
007E569C 90 NOP
007E569D 90 NOP
007E569E 90 NOP
007E569F 90 NOP
007E56A0 90 NOP
007E56A1 90 NOP
007E56A2 90 NOP
007E56A3 90 NOP
007E56A4 90 NOP
007E56A5 90 NOP
007E56A6 90 NOP
007E56A7 90 NOP
007E56A8 90 NOP
007E56A9 90 NOP
007E56AA 90 NOP
007E56AB 90 NOP
007E56AC 90 NOP
007E56AD 90 NOP
007E56AE 90 NOP
007E56AF 90 NOP
007E56B0 90 NOP
007E56B1 90 NOP
007E56B2 90 NOP
007E56B3 90 NOP
007E56B4 90 NOP
007E56B5 90 NOP
007E56B6 90 NOP
007E56B7 90 NOP
007E56B8 90 NOP
007E56B9 90 NOP
007E56BA 90 NOP
007E56BB 90 NOP
007E56BC 90 NOP
007E56BD 90 NOP
007E56BE 90 NOP
007E56BF 90 NOP
007E56C0 90 NOP
007E56C1 90 NOP
007E56C2 90 NOP
007E56C3 90 NOP
007E56C4 90 NOP
007E56C5 90 NOP
007E56C6 90 NOP
007E56C7 90 NOP
007E56C8 90 NOP
007E56C9 90 NOP
007E56CA 90 NOP
007E56CB 90 NOP
007E56CC 90 NOP
007E56CD 90 NOP
007E56CE 90 NOP
007E56CF 90 NOP
007E56D0 90 NOP
007E56D1 90 NOP
007E56D2 90 NOP
007E56D3 90 NOP
007E56D4 90 NOP
007E56D5 90 NOP
007E56D6 90 NOP
007E56D7 90 NOP
007E56D8 90 NOP
007E56D9 90 NOP
007E56DA 90 NOP
007E56DB 90 NOP
007E56DC 90 NOP
007E56DD 90 NOP
007E56DE 90 NOP
007E56DF 90 NOP
007E56E0 90 NOP
007E56E1 90 NOP
007E56E2 90 NOP ; BL=80 测试SF=1
007E56E3 90 NOP
007E56E4 90 NOP
007E56E5 90 NOP
007E56E6 90 NOP
007E56E7 90 NOP
007E56E8 90 NOP
007E56E9 90 NOP
007E56EA 90 NOP
007E56EB 90 NOP
007E56EC 90 NOP
007E56ED 90 NOP
007E56EE 90 NOP
007E56EF 90 NOP
007E56F0 90 NOP
007E56F1 90 NOP
007E56F2 90 NOP
007E56F3 90 NOP
007E56F4 90 NOP
007E56F5 90 NOP
007E56F6 90 NOP
007E56F7 90 NOP
007E56F8 90 NOP
007E56F9 90 NOP
007E56FA 90 NOP
007E56FB 90 NOP
007E56FC 90 NOP
007E56FD 90 NOP
007E56FE 90 NOP
007E56FF 90 NOP
007E5700 90 NOP
007E5701 90 NOP
007E5702 90 NOP
007E5703 90 NOP
007E5704 90 NOP
007E5705 90 NOP
007E5706 90 NOP
007E5707 90 NOP
007E5708 90 NOP
007E5709 90 NOP
007E570A 90 NOP
007E570B 90 NOP
007E570C 90 NOP
007E570D 90 NOP
007E570E 90 NOP
007E570F 90 NOP
007E5710 90 NOP
007E5711 90 NOP
007E5712 90 NOP
007E5713 90 NOP
007E5714 90 NOP
007E5715 90 NOP
007E5716 90 NOP
007E5717 90 NOP
007E5718 90 NOP
007E5719 90 NOP
007E571A 90 NOP
007E571B 90 NOP
007E571C 90 NOP
007E571D 90 NOP
007E571E 90 NOP
007E571F 90 NOP
007E5720 90 NOP
007E5721 90 NOP
007E5722 90 NOP
007E5723 90 NOP
007E5724 90 NOP
007E5725 90 NOP
007E5726 90 NOP
007E5727 90 NOP
007E5728 90 NOP ; DH=08 (Backspace) 测试OF=
007E5729 90 NOP
007E572A 90 NOP
007E572B 90 NOP
007E572C 90 NOP
007E572D 90 NOP
007E572E 90 NOP
007E572F 90 NOP
007E5730 90 NOP
007E5731 90 NOP
007E5732 90 NOP
007E5733 90 NOP
007E5734 90 NOP
007E5735 90 NOP
007E5736 90 NOP
007E5737 90 NOP
007E5738 90 NOP
007E5739 90 NOP
007E573A 90 NOP
007E573B 90 NOP
007E573C 90 NOP
007E573D 90 NOP
007E573E 90 NOP
007E573F 90 NOP
007E5740 90 NOP
007E5741 90 NOP
007E5742 90 NOP
007E5743 90 NOP
007E5744 90 NOP
007E5745 90 NOP
007E5746 90 NOP
007E5747 90 NOP
007E5748 90 NOP
007E5749 90 NOP
007E574A 90 NOP
007E574B 90 NOP
007E574C 90 NOP
007E574D 90 NOP
007E574E 90 NOP
007E574F 90 NOP
007E5750 90 NOP
007E5751 90 NOP
007E5752 90 NOP
007E5753 90 NOP
007E5754 90 NOP
007E5755 90 NOP
007E5756 90 NOP
007E5757 90 NOP
007E5758 90 NOP
007E5759 90 NOP
007E575A 90 NOP
007E575B 90 NOP ; 测试OF=1 SF=1
007E575C 90 NOP
007E575D 90 NOP
007E575E 90 NOP
007E575F 90 NOP
007E5760 90 NOP
007E5761 90 NOP
007E5762 90 NOP
007E5763 90 NOP
007E5764 90 NOP
007E5765 90 NOP
007E5766 90 NOP
007E5767 90 NOP ; (S异或O)或Z=1 JLE/JNG(比较带符号数)是类型
007E5768 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E576B 8B0D DC838300 MOV ECX, DWORD PTR DS:[8383DC]
007E5771 330D E0838300 XOR ECX, DWORD PTR DS:[8383E0]
007E5777 D1E1 SHL ECX, 1
007E5779 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E577C 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E5780 74 09 JE SHORT ezcddax.007E578B
007E5782 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E5785 83CA 01 OR EDX, 1
007E5788 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E578B 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E578E 50 PUSH EAX
007E578F FF15 08CC8300 CALL DWORD PTR DS:[83CC08] ; ezcddax.007DE7F5
007E5795 83C4 04 ADD ESP, 4
007E5798 5F POP EDI
007E5799 5E POP ESI
007E579A 5B POP EBX
007E579B 8BE5 MOV ESP, EBP
007E579D 5D POP EBP
007E579E C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JBE/JNA(比较无符号数) 测试CF和ZF=1 二进制代码: 76
007E4561 55 PUSH EBP
007E4562 8BEC MOV EBP, ESP
007E4564 83EC 0C SUB ESP, 0C
007E4567 53 PUSH EBX
007E4568 56 PUSH ESI
007E4569 57 PUSH EDI
007E456A 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E456D 50 PUSH EAX
007E456E FF15 3CCC8300 CALL DWORD PTR DS:[83CC3C] ; ezcddax.007DCE03
007E4574 83C4 04 ADD ESP, 4
007E4577 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E457A 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E457D 53 PUSH EBX
007E457E BB FFFF0000 MOV EBX, 0FFFF
007E4583 23C3 AND EAX, EBX
007E4585 51 PUSH ECX
007E4586 B5 2C MOV CH, 2C
007E4588 80ED 01 SUB CH, 1
007E458B 80ED 20 SUB CH, 20
007E458E FECD DEC CH
007E4590 FECD DEC CH
007E4592 80ED 04 SUB CH, 4
007E4595 FECD DEC CH
007E4597 80ED 03 SUB CH, 3
007E459A FECD DEC CH
007E459C 22E5 AND AH, CH
007E459E B1 72 MOV CL, 72
007E45A0 80E9 02 SUB CL, 2
007E45A3 FEC9 DEC CL
007E45A5 FEC9 DEC CL
007E45A7 FEC9 DEC CL
007E45A9 80E9 06 SUB CL, 6
007E45AC F6D0 NOT AL
007E45AE 0FC9 BSWAP ECX
007E45B0 F6D0 NOT AL
007E45B2 0FC9 BSWAP ECX
007E45B4 FEC9 DEC CL
007E45B6 FEC9 DEC CL
007E45B8 80E9 10 SUB CL, 10
007E45BB FEC9 DEC CL
007E45BD FEC9 DEC CL
007E45BF 80C1 0C ADD CL, 0C
007E45C2 FEC9 DEC CL
007E45C4 FEC9 DEC CL
007E45C6 FEC9 DEC CL
007E45C8 FEC9 DEC CL
007E45CA FEC9 DEC CL
007E45CC FEC9 DEC CL
007E45CE FEC9 DEC CL
007E45D0 FEC9 DEC CL
007E45D2 80E9 10 SUB CL, 10
007E45D5 80E9 01 SUB CL, 1
007E45D8 FEC9 DEC CL
007E45DA FEC9 DEC CL
007E45DC FEC9 DEC CL
007E45DE FEC9 DEC CL
007E45E0 FEC9 DEC CL
007E45E2 FEC9 DEC CL
007E45E4 FEC9 DEC CL
007E45E6 FEC9 DEC CL
007E45E8 F7D1 NOT ECX
007E45EA 0FC8 BSWAP EAX
007E45EC F7D1 NOT ECX
007E45EE 0FC8 BSWAP EAX
007E45F0 FEC1 INC CL
007E45F2 80C1 02 ADD CL, 2
007E45F5 22C1 AND AL, CL ; CL=41 ('A')
007E45F7 8BC0 MOV EAX, EAX
007E45F9 59 POP ECX
007E45FA F7D8 NEG EAX
007E45FC 1BC0 SBB EAX, EAX
007E45FE F7D8 NEG EAX
007E4600 5B POP EBX ; 测试CF和ZF=1 JBE/JNA(比较无符号数)类型 76
007E4601 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E4604 8B0D AC838300 MOV ECX, DWORD PTR DS:[8383AC]
007E460A 330D B0838300 XOR ECX, DWORD PTR DS:[8383B0]
007E4610 D1E1 SHL ECX, 1
007E4612 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E4615 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E4619 74 09 JE SHORT ezcddax.007E4624
007E461B 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E461E 83CA 01 OR EDX, 1
007E4621 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E4624 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E4627 50 PUSH EAX
007E4628 FF15 D8CB8300 CALL DWORD PTR DS:[83CBD8] ; ezcddax.007DCCAB
007E462E 83C4 04 ADD ESP, 4
007E4631 5F POP EDI
007E4632 5E POP ESI
007E4633 5B POP EBX
007E4634 8BE5 MOV ESP, EBP
007E4636 5D POP EBP
007E4637 C3 RETN
修改为:
007E4561 55 PUSH EBP
007E4562 8BEC MOV EBP, ESP
007E4564 83EC 0C SUB ESP, 0C
007E4567 53 PUSH EBX
007E4568 56 PUSH ESI
007E4569 57 PUSH EDI
007E456A 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E456D 50 PUSH EAX
007E456E FF15 3CCC8300 CALL DWORD PTR DS:[83CC3C] ; ezcddax.007DCE03
007E4574 83C4 04 ADD ESP, 4
007E4577 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E457A 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E457D 90 NOP
007E457E 90 NOP
007E457F 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10]
007E4585 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E4587 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E458B 74 06 JE SHORT ezcddax.007E4593
007E458D C640 FF 76 MOV BYTE PTR DS:[EAX-1], 76
007E4591 EB 20 JMP SHORT ezcddax.007E45B3
007E4593 C600 86 MOV BYTE PTR DS:[EAX], 86
007E4596 90 NOP
007E4597 33C0 XOR EAX, EAX
007E4599 90 NOP
007E459A 90 NOP
007E459B 90 NOP
007E459C 90 NOP
007E459D 90 NOP
007E459E 90 NOP
007E459F 90 NOP
007E45A0 90 NOP
007E45A1 90 NOP
007E45A2 90 NOP
007E45A3 90 NOP
007E45A4 90 NOP
007E45A5 90 NOP
007E45A6 90 NOP
007E45A7 90 NOP
007E45A8 90 NOP
007E45A9 90 NOP
007E45AA 90 NOP
007E45AB 90 NOP
007E45AC 90 NOP
007E45AD 90 NOP
007E45AE 90 NOP
007E45AF 90 NOP
007E45B0 90 NOP
007E45B1 90 NOP
007E45B2 90 NOP
007E45B3 90 NOP
007E45B4 90 NOP
007E45B5 90 NOP
007E45B6 90 NOP
007E45B7 90 NOP
007E45B8 90 NOP
007E45B9 90 NOP
007E45BA 90 NOP
007E45BB 90 NOP
007E45BC 90 NOP
007E45BD 90 NOP
007E45BE 90 NOP
007E45BF 90 NOP
007E45C0 90 NOP
007E45C1 90 NOP
007E45C2 90 NOP
007E45C3 90 NOP
007E45C4 90 NOP
007E45C5 90 NOP
007E45C6 90 NOP
007E45C7 90 NOP
007E45C8 90 NOP
007E45C9 90 NOP
007E45CA 90 NOP
007E45CB 90 NOP
007E45CC 90 NOP
007E45CD 90 NOP
007E45CE 90 NOP
007E45CF 90 NOP
007E45D0 90 NOP
007E45D1 90 NOP
007E45D2 90 NOP
007E45D3 90 NOP
007E45D4 90 NOP
007E45D5 90 NOP
007E45D6 90 NOP
007E45D7 90 NOP
007E45D8 90 NOP
007E45D9 90 NOP
007E45DA 90 NOP
007E45DB 90 NOP
007E45DC 90 NOP
007E45DD 90 NOP
007E45DE 90 NOP
007E45DF 90 NOP
007E45E0 90 NOP
007E45E1 90 NOP
007E45E2 90 NOP
007E45E3 90 NOP
007E45E4 90 NOP
007E45E5 90 NOP
007E45E6 90 NOP
007E45E7 90 NOP
007E45E8 90 NOP
007E45E9 90 NOP
007E45EA 90 NOP
007E45EB 90 NOP
007E45EC 90 NOP
007E45ED 90 NOP
007E45EE 90 NOP
007E45EF 90 NOP
007E45F0 90 NOP
007E45F1 90 NOP
007E45F2 90 NOP
007E45F3 90 NOP
007E45F4 90 NOP
007E45F5 90 NOP ; CL=41 ('A')
007E45F6 90 NOP
007E45F7 90 NOP
007E45F8 90 NOP
007E45F9 90 NOP
007E45FA 90 NOP
007E45FB 90 NOP
007E45FC 90 NOP
007E45FD 90 NOP
007E45FE 90 NOP
007E45FF 90 NOP
007E4600 90 NOP ; 测试CF和ZF=1 JBE/JNA(比较无符号数)类型 76
007E4601 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E4604 8B0D AC838300 MOV ECX, DWORD PTR DS:[8383AC]
007E460A 330D B0838300 XOR ECX, DWORD PTR DS:[8383B0]
007E4610 D1E1 SHL ECX, 1
007E4612 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E4615 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E4619 74 09 JE SHORT ezcddax.007E4624
007E461B 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E461E 83CA 01 OR EDX, 1
007E4621 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E4624 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E4627 50 PUSH EAX
007E4628 FF15 D8CB8300 CALL DWORD PTR DS:[83CBD8] ; ezcddax.007DCCAB
007E462E 83C4 04 ADD ESP, 4
007E4631 5F POP EDI
007E4632 5E POP ESI
007E4633 5B POP EBX
007E4634 8BE5 MOV ESP, EBP
007E4636 5D POP EBP
007E4637 C3 RETN
55 8B EC 83 EC 0C 53 56 57 8B 45 08 50 FF 15 3C CC 83 00 83 C4 04 89 45 FC 8B 45 FC 90 90 36 A1
10 8F 82 00 8B 00 80 78 FF 0F 74 06 C6 40 FF 76 EB 20 C6 00 86 90 33 C0 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
89 45 F4 8B 0D AC 83 83 00 33 0D B0 83 83 00 D1 E1 89 4D F8 83 7D F4 00 74 09 8B 55 F8 83 CA 01
89 55 F8 8B 45 F8 50 FF 15 D8 CB 83 00 83 C4 04 5F 5E 5B 8B E5 5D C3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jns 测试 sf=0 二进制代码:79
007EE14E 55 PUSH EBP
007EE14F 8BEC MOV EBP, ESP
007EE151 83EC 0C SUB ESP, 0C
007EE154 53 PUSH EBX
007EE155 56 PUSH ESI
007EE156 57 PUSH EDI
007EE157 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EE15A 50 PUSH EAX
007EE15B FF15 78CC8300 CALL DWORD PTR DS:[83CC78] ; ezcddax.007DF082
007EE161 83C4 04 ADD ESP, 4
007EE164 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EE167 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EE16A 53 PUSH EBX
007EE16B 8B5D 0C MOV EBX, DWORD PTR SS:[EBP+C]
007EE16E BB 00080000 MOV EBX, 800
007EE173 EB 05 JMP SHORT ezcddax.007EE17A
007EE175 BB 80000000 MOV EBX, 80
007EE17A BB 70000000 MOV EBX, 70
007EE17F F7D3 NOT EBX
007EE181 0FC8 BSWAP EAX
007EE183 F7D3 NOT EBX
007EE185 43 INC EBX
007EE186 43 INC EBX
007EE187 43 INC EBX
007EE188 43 INC EBX
007EE189 83C3 04 ADD EBX, 4
007EE18C 43 INC EBX
007EE18D 43 INC EBX
007EE18E 43 INC EBX
007EE18F 43 INC EBX
007EE190 4B DEC EBX
007EE191 51 PUSH ECX
007EE192 B9 04000000 MOV ECX, 4
007EE197 03D9 ADD EBX, ECX
007EE199 43 INC EBX
007EE19A 59 POP ECX
007EE19B 0FC8 BSWAP EAX
007EE19D 23C3 AND EAX, EBX ; EBX=00000080 SF=0
007EE19F 5B POP EBX
007EE1A0 F7D8 NEG EAX
007EE1A2 1BC0 SBB EAX, EAX
007EE1A4 40 INC EAX ; JNS类型 79
007EE1A5 5A POP EDX
007EE1A6 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EE1A9 8B0D E8838300 MOV ECX, DWORD PTR DS:[8383E8]
007EE1AF 330D EC838300 XOR ECX, DWORD PTR DS:[8383EC]
007EE1B5 D1E1 SHL ECX, 1
007EE1B7 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EE1BA 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EE1BE 74 09 JE SHORT ezcddax.007EE1C9
007EE1C0 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EE1C3 83CA 01 OR EDX, 1
007EE1C6 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EE1C9 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EE1CC 50 PUSH EAX
007EE1CD FF15 14CC8300 CALL DWORD PTR DS:[83CC14] ; ezcddax.007DEFBD
007EE1D3 83C4 04 ADD ESP, 4
007EE1D6 5F POP EDI
007EE1D7 5E POP ESI
007EE1D8 5B POP EBX
007EE1D9 8BE5 MOV ESP, EBP
007EE1DB 5D POP EBP
007EE1DC C3 RETN
修改:
007EE14E /. 55 PUSH EBP
007EE14F |. 8BEC MOV EBP, ESP
007EE151 |. 83EC 0C SUB ESP, 0C
007EE154 |. 53 PUSH EBX
007EE155 |. 56 PUSH ESI
007EE156 |. 57 PUSH EDI
007EE157 |. 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EE15A |. 50 PUSH EAX ; /Arg1
007EE15B |. FF15 78CC8300 CALL DWORD PTR DS:[83CC78] ; \ezcddax.007DF082
007EE161 |. 83C4 04 ADD ESP, 4
007EE164 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EE167 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EE16A |> 90 NOP
007EE16B |. 90 NOP
007EE16C |. 36:A1 108F820>MOV EAX, DWORD PTR SS:[828F10]
007EE172 |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
007EE174 |. 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007EE178 |. 74 06 JE SHORT ezcddax.007EE180
007EE17A |. C640 FF 79 MOV BYTE PTR DS:[EAX-1], 79
007EE17E |. EB 20 JMP SHORT ezcddax.007EE1A0
007EE180 |> C600 89 MOV BYTE PTR DS:[EAX], 89
007EE183 |. 90 NOP
007EE184 |. 33C0 XOR EAX, EAX
007EE186 |. 90 NOP
007EE187 |. 90 NOP
007EE188 |. 90 NOP
007EE189 |. 90 NOP
007EE18A |. 90 NOP
007EE18B |. 90 NOP
007EE18C |. 90 NOP
007EE18D |. 90 NOP
007EE18E |. 90 NOP
007EE18F |. 90 NOP
007EE190 |. 90 NOP
007EE191 |. 90 NOP
007EE192 |. 90 NOP
007EE193 |. 90 NOP
007EE194 |. 90 NOP
007EE195 |. 90 NOP
007EE196 |. 90 NOP
007EE197 |. 90 NOP
007EE198 |. 90 NOP
007EE199 |. 90 NOP
007EE19A |. 90 NOP
007EE19B |. 90 NOP
007EE19C |. 90 NOP
007EE19D |. 90 NOP ; EBX=00000080 SF=0
007EE19E |. 90 NOP
007EE19F |. 90 NOP
007EE1A0 |> 90 NOP
007EE1A1 |. 90 NOP
007EE1A2 |. 90 NOP
007EE1A3 |. 90 NOP
007EE1A4 |. 90 NOP ; JnS类型 79
007EE1A5 |. 90 NOP
007EE1A6 |. 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EE1A9 |. 8B0D E8838300 MOV ECX, DWORD PTR DS:[8383E8]
007EE1AF |. 330D EC838300 XOR ECX, DWORD PTR DS:[8383EC]
007EE1B5 |. D1E1 SHL ECX, 1
007EE1B7 |. 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EE1BA |. 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EE1BE |. 74 09 JE SHORT ezcddax.007EE1C9
007EE1C0 |. 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EE1C3 |. 83CA 01 OR EDX, 1
007EE1C6 |. 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EE1C9 |> 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EE1CC |. 50 PUSH EAX ; /Arg1
007EE1CD |. FF15 14CC8300 CALL DWORD PTR DS:[83CC14] ; \ezcddax.007DEFBD
007EE1D3 |. 83C4 04 ADD ESP, 4
007EE1D6 |. 5F POP EDI
007EE1D7 |. 5E POP ESI
007EE1D8 |. 5B POP EBX
007EE1D9 |. 8BE5 MOV ESP, EBP
007EE1DB |. 5D POP EBP
007EE1DC \. C3 RETN
55 8B EC 83 EC 0C 53 56 57 8B 45 08 50 FF 15 78 CC 83 00 83 C4 04 89 45 FC 8B 45 FC 90 90 36 A1
10 8F 82 00 8B 00 80 78 FF 0F 74 06 C6 40 FF 78 EB 20 C6 00 88 90 33 C0 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 89 45 F4 8B 0D E8 83 83
00 33 0D EC 83 83 00 D1 E1 89 4D F8 83 7D F4 00 74 09 8B 55 F8 83 CA 01 89 55 F8 8B 45 F8 50 FF
15 14 CC 83 00 83 C4 04 5F 5E 5B 8B E5 5D C3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JGE/JNL(比较带符号数) 测试 sf xor of=0 二进制代码: 7d
007EC235 55 PUSH EBP
007EC236 8BEC MOV EBP, ESP
007EC238 83EC 0C SUB ESP, 0C
007EC23B 53 PUSH EBX
007EC23C 56 PUSH ESI
007EC23D 57 PUSH EDI
007EC23E 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EC241 50 PUSH EAX
007EC242 FF15 50CC8300 CALL DWORD PTR DS:[83CC50] ; ezcddax.007DD791
007EC248 83C4 04 ADD ESP, 4
007EC24B 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EC24E 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EC251 51 PUSH ECX
007EC252 B9 00080000 MOV ECX, 800
007EC257 B9 4B000000 MOV ECX, 4B
007EC25C F7D1 NOT ECX
007EC25E 0FC8 BSWAP EAX
007EC260 F7D1 NOT ECX
007EC262 83F1 19 XOR ECX, 19
007EC265 41 INC ECX
007EC266 41 INC ECX
007EC267 41 INC ECX
007EC268 41 INC ECX
007EC269 41 INC ECX
007EC26A 41 INC ECX
007EC26B 41 INC ECX
007EC26C 41 INC ECX
007EC26D 49 DEC ECX
007EC26E 41 INC ECX
007EC26F FEC1 INC CL
007EC271 FEC1 INC CL
007EC273 FEC1 INC CL
007EC275 83C1 12 ADD ECX, 12
007EC278 83C1 0A ADD ECX, 0A
007EC27B 49 DEC ECX
007EC27C 52 PUSH EDX
007EC27D BA 04000000 MOV EDX, 4
007EC282 03CA ADD ECX, EDX
007EC284 41 INC ECX
007EC285 5A POP EDX
007EC286 0FC8 BSWAP EAX
007EC288 83C1 03 ADD ECX, 3
007EC28B 23C1 AND EAX, ECX ; CL=80 sf=1
007EC28D 59 POP ECX
007EC28E F7D8 NEG EAX
007EC290 1BC0 SBB EAX, EAX
007EC292 40 INC EAX
007EC293 5A POP EDX
007EC294 50 PUSH EAX
007EC295 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EC298 BA 000E0000 MOV EDX, 0E00
007EC29D 80EE 01 SUB DH, 1
007EC2A0 FECE DEC DH
007EC2A2 FECE DEC DH
007EC2A4 FECE DEC DH
007EC2A6 FECE DEC DH
007EC2A8 FECE DEC DH
007EC2AA 23C2 AND EAX, EDX
007EC2AC F7D8 NEG EAX
007EC2AE 1BC0 SBB EAX, EAX
007EC2B0 40 INC EAX
007EC2B1 8BD0 MOV EDX, EAX
007EC2B3 58 POP EAX
007EC2B4 33C9 XOR ECX, ECX
007EC2B6 3BC2 CMP EAX, EDX
007EC2B8 0F94C1 SETE CL
007EC2BB 8AC1 MOV AL, CL ; JGE/JNL(比较带符号数) sf xor of=0
007EC2BD 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EC2C0 8B0D C0838300 MOV ECX, DWORD PTR DS:[8383C0]
007EC2C6 330D C4838300 XOR ECX, DWORD PTR DS:[8383C4]
007EC2CC D1E1 SHL ECX, 1
007EC2CE 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EC2D1 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EC2D5 74 09 JE SHORT ezcddax.007EC2E0
007EC2D7 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EC2DA 83CA 01 OR EDX, 1
007EC2DD 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EC2E0 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EC2E3 50 PUSH EAX
007EC2E4 FF15 ECCB8300 CALL DWORD PTR DS:[83CBEC] ; ezcddax.007DD707
007EC2EA 83C4 04 ADD ESP, 4
007EC2ED 5F POP EDI
007EC2EE 5E POP ESI
007EC2EF 5B POP EBX
007EC2F0 8BE5 MOV ESP, EBP
007EC2F2 5D POP EBP
007EC2F3 C3 RETN
修改为:
007EC235 55 PUSH EBP
007EC236 8BEC MOV EBP, ESP
007EC238 83EC 0C SUB ESP, 0C
007EC23B 53 PUSH EBX
007EC23C 56 PUSH ESI
007EC23D 57 PUSH EDI
007EC23E 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EC241 50 PUSH EAX
007EC242 FF15 50CC8300 CALL DWORD PTR DS:[83CC50] ; ezcddax.007DD791
007EC248 83C4 04 ADD ESP, 4
007EC24B 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EC24E 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EC251 90 NOP
007EC252 90 NOP
007EC253 36:A1 108F8200 MOV EAX, DWORD PTR SS:[828F10]
007EC259 8B00 MOV EAX, DWORD PTR DS:[EAX]
007EC25B 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007EC25F 74 06 JE SHORT ezcddax.007EC267
007EC261 C640 FF 7D MOV BYTE PTR DS:[EAX-1], 7D
007EC265 EB 20 JMP SHORT ezcddax.007EC287
007EC267 C600 8D MOV BYTE PTR DS:[EAX], 8D
007EC26A 90 NOP
007EC26B 33C0 XOR EAX, EAX
007EC26D 90 NOP
007EC26E 90 NOP
007EC26F 90 NOP
007EC270 90 NOP
007EC271 90 NOP
007EC272 90 NOP
007EC273 90 NOP
007EC274 90 NOP
007EC275 90 NOP
007EC276 90 NOP
007EC277 90 NOP
007EC278 90 NOP
007EC279 90 NOP
007EC27A 90 NOP
007EC27B 90 NOP
007EC27C 90 NOP
007EC27D 90 NOP
007EC27E 90 NOP
007EC27F 90 NOP
007EC280 90 NOP
007EC281 90 NOP
007EC282 90 NOP
007EC283 90 NOP
007EC284 90 NOP
007EC285 90 NOP
007EC286 90 NOP
007EC287 90 NOP
007EC288 90 NOP
007EC289 90 NOP
007EC28A 90 NOP
007EC28B 90 NOP ; CL=80 sf=1
007EC28C 90 NOP
007EC28D 90 NOP
007EC28E 90 NOP
007EC28F 90 NOP
007EC290 90 NOP
007EC291 90 NOP
007EC292 90 NOP
007EC293 90 NOP
007EC294 90 NOP
007EC295 90 NOP
007EC296 90 NOP
007EC297 90 NOP
007EC298 90 NOP
007EC299 90 NOP
007EC29A 90 NOP
007EC29B 90 NOP
007EC29C 90 NOP
007EC29D 90 NOP
007EC29E 90 NOP
007EC29F 90 NOP
007EC2A0 90 NOP
007EC2A1 90 NOP
007EC2A2 90 NOP
007EC2A3 90 NOP
007EC2A4 90 NOP
007EC2A5 90 NOP
007EC2A6 90 NOP
007EC2A7 90 NOP
007EC2A8 90 NOP
007EC2A9 90 NOP
007EC2AA 90 NOP
007EC2AB 90 NOP
007EC2AC 90 NOP
007EC2AD 90 NOP
007EC2AE 90 NOP
007EC2AF 90 NOP
007EC2B0 90 NOP
007EC2B1 90 NOP
007EC2B2 90 NOP
007EC2B3 90 NOP
007EC2B4 90 NOP
007EC2B5 90 NOP
007EC2B6 90 NOP
007EC2B7 90 NOP
007EC2B8 90 NOP
007EC2B9 90 NOP
007EC2BA 90 NOP
007EC2BB 90 NOP ; JGE/JNL(比较带符号数) sf xor of=0
007EC2BC 90 NOP
007EC2BD 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EC2C0 8B0D C0838300 MOV ECX, DWORD PTR DS:[8383C0]
007EC2C6 330D C4838300 XOR ECX, DWORD PTR DS:[8383C4]
007EC2CC D1E1 SHL ECX, 1
007EC2CE 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EC2D1 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EC2D5 74 09 JE SHORT ezcddax.007EC2E0
007EC2D7 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EC2DA 83CA 01 OR EDX, 1
007EC2DD 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EC2E0 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EC2E3 50 PUSH EAX
007EC2E4 FF15 ECCB8300 CALL DWORD PTR DS:[83CBEC] ; ezcddax.007DD707
007EC2EA 83C4 04 ADD ESP, 4
007EC2ED 5F POP EDI
007EC2EE 5E POP ESI
007EC2EF 5B POP EBX
007EC2F0 8BE5 MOV ESP, EBP
007EC2F2 5D POP EBP
007EC2F3 C3 RETN
55 8B EC 83 EC 0C 53 56 57 8B 45 08 50 FF 15 50 CC 83 00 83 C4 04 89 45 FC 8B 45 FC 90 90 36 A1
10 8F 82 00 8B 00 80 78 FF 0F 74 06 C6 40 FF 7D EB 20 C6 00 8D 90 33 C0 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 89 45 F4 8B 0D C0 83 83 00 33 0D C4 83 83 00 D1 E1 89 4D F8 83 7D F4 00
74 09 8B 55 F8 83 CA 01 89 55 F8 8B 45 F8 50 FF 15 EC CB 83 00 83 C4 04 5F 5E 5B 8B E5 5D C3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JC类型 AND 1 测试CF=1 二进制代码:72
007E4AF7 55 PUSH EBP
007E4AF8 8BEC MOV EBP, ESP
007E4AFA 83EC 0C SUB ESP, 0C
007E4AFD 53 PUSH EBX
007E4AFE 56 PUSH ESI
007E4AFF 57 PUSH EDI
007E4B00 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E4B03 50 PUSH EAX
007E4B04 FF15 5CCC8300 CALL DWORD PTR DS:[83CC5C] ; ezcddax.007DDF8E
007E4B0A 83C4 04 ADD ESP, 4
007E4B0D 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E4B10 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E4B13 52 PUSH EDX
007E4B14 B6 02 MOV DH, 2
007E4B16 FECE DEC DH
007E4B18 FECE DEC DH
007E4B1A 22E6 AND AH, DH
007E4B1C B2 0E MOV DL, 0E
007E4B1E 80EA FF SUB DL, 0FF
007E4B21 70 07 JO SHORT ezcddax.007E4B2A
007E4B23 7C 03 JL SHORT ezcddax.007E4B28
007E4B25 EB 05 JMP SHORT ezcddax.007E4B2C
007E4B27 - E9 74FBEBF9 JMP FA6A46A0
007E4B2C 80EA FF SUB DL, 0FF
007E4B2F 80EA FF SUB DL, 0FF
007E4B32 80EA 0A SUB DL, 0A
007E4B35 80EA FF SUB DL, 0FF
007E4B38 80EA FF SUB DL, 0FF
007E4B3B 80EA 05 SUB DL, 5
007E4B3E FECA DEC DL
007E4B40 FECA DEC DL
007E4B42 FECA DEC DL
007E4B44 80EA 03 SUB DL, 3
007E4B47 80EA FF SUB DL, 0FF
007E4B4A FECA DEC DL
007E4B4C FEC2 INC DL
007E4B4E FEC2 INC DL
007E4B50 FEC2 INC DL
007E4B52 22C2 AND AL, DL ; DL=01 CF=1 JC类型 72
007E4B54 5A POP EDX
007E4B55 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E4B58 8B0D CC838300 MOV ECX, DWORD PTR DS:[8383CC]
007E4B5E 330D D0838300 XOR ECX, DWORD PTR DS:[8383D0]
007E4B64 D1E1 SHL ECX, 1
007E4B66 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E4B69 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E4B6D 74 09 JE SHORT ezcddax.007E4B78
007E4B6F 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E4B72 83CA 01 OR EDX, 1
007E4B75 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E4B78 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E4B7B 50 PUSH EAX
007E4B7C FF15 F8CB8300 CALL DWORD PTR DS:[83CBF8] ; ezcddax.007DDE09
007E4B82 83C4 04 ADD ESP, 4
007E4B85 5F POP EDI
007E4B86 5E POP ESI
007E4B87 5B POP EBX
007E4B88 8BE5 MOV ESP, EBP
007E4B8A 5D POP EBP
007E4B8B C3 RETN
修改为:
007E4AF7 /. 55 PUSH EBP
007E4AF8 |. 8BEC MOV EBP, ESP
007E4AFA |. 83EC 0C SUB ESP, 0C
007E4AFD |. 53 PUSH EBX
007E4AFE |. 56 PUSH ESI
007E4AFF |. 57 PUSH EDI
007E4B00 |. 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E4B03 |. 50 PUSH EAX ; /Arg1
007E4B04 |. FF15 5CCC8300 CALL DWORD PTR DS:[83CC5C] ; \ezcddax.007DDF8E
007E4B0A |. 83C4 04 ADD ESP, 4
007E4B0D |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E4B10 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E4B13 |. 90 NOP
007E4B14 |. 90 NOP
007E4B15 |. 36:A1 108F820>MOV EAX, DWORD PTR SS:[828F10]
007E4B1B |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E4B1D |. 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E4B21 |. 74 06 JE SHORT ezcddax.007E4B29
007E4B23 |. C640 FF 72 MOV BYTE PTR DS:[EAX-1], 72
007E4B27 |. EB 20 JMP SHORT ezcddax.007E4B49
007E4B29 |> C600 82 MOV BYTE PTR DS:[EAX], 82
007E4B2C |. 90 NOP
007E4B2D |. 33C0 XOR EAX, EAX
007E4B2F |. 90 NOP
007E4B30 |. 90 NOP
007E4B31 |. 90 NOP
007E4B32 |. 90 NOP
007E4B33 |. 90 NOP
007E4B34 |. 90 NOP
007E4B35 |. 90 NOP
007E4B36 |. 90 NOP
007E4B37 |. 90 NOP
007E4B38 |. 90 NOP
007E4B39 |. 90 NOP
007E4B3A |. 90 NOP
007E4B3B |. 90 NOP
007E4B3C |. 90 NOP
007E4B3D |. 90 NOP
007E4B3E |. 90 NOP
007E4B3F |. 90 NOP
007E4B40 |. 90 NOP
007E4B41 |. 90 NOP
007E4B42 |. 90 NOP
007E4B43 |. 90 NOP
007E4B44 |. 90 NOP
007E4B45 |. 90 NOP
007E4B46 |. 90 NOP
007E4B47 |. 90 NOP
007E4B48 |. 90 NOP
007E4B49 |> 90 NOP
007E4B4A |. 90 NOP
007E4B4B |. 90 NOP
007E4B4C |. 90 NOP
007E4B4D |. 90 NOP
007E4B4E |. 90 NOP
007E4B4F |. 90 NOP
007E4B50 |. 90 NOP
007E4B51 |. 90 NOP
007E4B52 |. 90 NOP ; DL=01 CF=1 JC类型 72
007E4B53 |. 90 NOP
007E4B54 |. 90 NOP
007E4B55 |. 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E4B58 |. 8B0D CC838300 MOV ECX, DWORD PTR DS:[8383CC]
007E4B5E |. 330D D0838300 XOR ECX, DWORD PTR DS:[8383D0]
007E4B64 |. D1E1 SHL ECX, 1
007E4B66 |. 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E4B69 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E4B6D |. 74 09 JE SHORT ezcddax.007E4B78
007E4B6F |. 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E4B72 |. 83CA 01 OR EDX, 1
007E4B75 |. 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E4B78 |> 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E4B7B |. 50 PUSH EAX ; /Arg1
007E4B7C |. FF15 F8CB8300 CALL DWORD PTR DS:[83CBF8] ; \ezcddax.007DDE09
007E4B82 |. 83C4 04 ADD ESP, 4
007E4B85 |. 5F POP EDI
007E4B86 |. 5E POP ESI
007E4B87 |. 5B POP EBX
007E4B88 |. 8BE5 MOV ESP, EBP
007E4B8A |. 5D POP EBP
007E4B8B \. C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JBE/JNA(比较无符号数) and ebx=41 C或Z=1 二进制代码:76
007E4561 /. 55 PUSH EBP
007E4562 |. 8BEC MOV EBP, ESP
007E4564 |. 83EC 0C SUB ESP, 0C
007E4567 |. 53 PUSH EBX
007E4568 |. 56 PUSH ESI
007E4569 |. 57 PUSH EDI
007E456A |. 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E456D |. 50 PUSH EAX ; /Arg1
007E456E |. FF15 3CCC8300 CALL DWORD PTR DS:[83CC3C] ; \ezcddax.007DCE03
007E4574 |. 83C4 04 ADD ESP, 4
007E4577 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E457A |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E457D |> 90 NOP
007E457E |. 90 NOP
007E457F |. 36:A1 108F820>MOV EAX, DWORD PTR SS:[828F10]
007E4585 |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E4587 |. 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E458B |. 74 06 JE SHORT ezcddax.007E4593
007E458D |. C640 FF 76 MOV BYTE PTR DS:[EAX-1], 76
007E4591 |. EB 20 JMP SHORT ezcddax.007E45B3
007E4593 |> C600 86 MOV BYTE PTR DS:[EAX], 86
007E4596 |. 90 NOP
007E4597 |. 33C0 XOR EAX, EAX
007E4599 |. 90 NOP
007E459A |. 90 NOP
007E459B |. 90 NOP
007E459C |. 90 NOP
007E459D |. 90 NOP
007E459E |. 90 NOP
007E459F |. 90 NOP
007E45A0 |. 90 NOP
007E45A1 |. 90 NOP
007E45A2 |. 90 NOP
007E45A3 |. 90 NOP
007E45A4 |. 90 NOP
007E45A5 |. 90 NOP
007E45A6 |. 90 NOP
007E45A7 |. 90 NOP
007E45A8 |. 90 NOP
007E45A9 |. 90 NOP
007E45AA |. 90 NOP
007E45AB |. 90 NOP
007E45AC |. 90 NOP
007E45AD |. 90 NOP
007E45AE |. 90 NOP
007E45AF |. 90 NOP
007E45B0 |. 90 NOP
007E45B1 |. 90 NOP
007E45B2 |. 90 NOP
007E45B3 |> 90 NOP
007E45B4 |. 90 NOP
007E45B5 |. 90 NOP
007E45B6 |. 90 NOP
007E45B7 |. 90 NOP
007E45B8 |. 90 NOP
007E45B9 |. 90 NOP
007E45BA |. 90 NOP
007E45BB |. 90 NOP
007E45BC |. 90 NOP
007E45BD |. 90 NOP
007E45BE |. 90 NOP
007E45BF |. 90 NOP
007E45C0 |. 90 NOP
007E45C1 |. 90 NOP
007E45C2 |. 90 NOP
007E45C3 |. 90 NOP
007E45C4 |. 90 NOP
007E45C5 |. 90 NOP
007E45C6 |. 90 NOP
007E45C7 |. 90 NOP
007E45C8 |. 90 NOP
007E45C9 |. 90 NOP
007E45CA |. 90 NOP
007E45CB |. 90 NOP
007E45CC |. 90 NOP
007E45CD |. 90 NOP
007E45CE |. 90 NOP
007E45CF |. 90 NOP
007E45D0 |. 90 NOP
007E45D1 |. 90 NOP
007E45D2 |. 90 NOP
007E45D3 |. 90 NOP
007E45D4 |. 90 NOP
007E45D5 |. 90 NOP
007E45D6 |. 90 NOP
007E45D7 |. 90 NOP
007E45D8 |. 90 NOP
007E45D9 |. 90 NOP
007E45DA |. 90 NOP
007E45DB |. 90 NOP
007E45DC |. 90 NOP
007E45DD |. 90 NOP
007E45DE |. 90 NOP
007E45DF |. 90 NOP
007E45E0 |. 90 NOP
007E45E1 |. 90 NOP
007E45E2 |. 90 NOP
007E45E3 |. 90 NOP
007E45E4 |. 90 NOP
007E45E5 |. 90 NOP
007E45E6 |. 90 NOP
007E45E7 |. 90 NOP
007E45E8 |. 90 NOP
007E45E9 |. 90 NOP
007E45EA |. 90 NOP
007E45EB |. 90 NOP
007E45EC |. 90 NOP
007E45ED |. 90 NOP
007E45EE |. 90 NOP
007E45EF |. 90 NOP
007E45F0 |. 90 NOP
007E45F1 |. 90 NOP
007E45F2 |. 90 NOP
007E45F3 |. 90 NOP
007E45F4 |. 90 NOP
007E45F5 |. 90 NOP ; CL=41 ('A')
007E45F6 |. 90 NOP
007E45F7 |. 90 NOP
007E45F8 |. 90 NOP
007E45F9 |. 90 NOP
007E45FA |. 90 NOP
007E45FB |. 90 NOP
007E45FC |. 90 NOP
007E45FD |. 90 NOP
007E45FE |. 90 NOP
007E45FF |. 90 NOP
007E4600 |. 90 NOP ; 测试CF和ZF=1 JBE/JNA(比较无符号数)类型 76
007E4601 |. 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E4604 |. 8B0D AC838300 MOV ECX, DWORD PTR DS:[8383AC]
007E460A |. 330D B0838300 XOR ECX, DWORD PTR DS:[8383B0]
007E4610 |. D1E1 SHL ECX, 1
007E4612 |. 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E4615 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E4619 |. 74 09 JE SHORT ezcddax.007E4624
007E461B |. 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E461E |. 83CA 01 OR EDX, 1
007E4621 |. 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E4624 |> 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E4627 |. 50 PUSH EAX ; /Arg1
007E4628 |. FF15 D8CB8300 CALL DWORD PTR DS:[83CBD8] ; \ezcddax.007DCCAB
007E462E |. 83C4 04 ADD ESP, 4
007E4631 |. 5F POP EDI
007E4632 |. 5E POP ESI
007E4633 |. 5B POP EBX
007E4634 |. 8BE5 MOV ESP, EBP
007E4636 |. 5D POP EBP
007E4637 \. C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JGE/JNL(比较带符号数)类型 测试 S异或O=0 二进制代码:7D
007EC235 /. 55 PUSH EBP
007EC236 |. 8BEC MOV EBP, ESP
007EC238 |. 83EC 0C SUB ESP, 0C
007EC23B |. 53 PUSH EBX
007EC23C |. 56 PUSH ESI
007EC23D |. 57 PUSH EDI
007EC23E |. 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007EC241 |. 50 PUSH EAX ; /Arg1
007EC242 |. FF15 50CC8300 CALL DWORD PTR DS:[83CC50] ; \ezcddax.007DD791
007EC248 |. 83C4 04 ADD ESP, 4
007EC24B |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007EC24E |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007EC251 |> 90 NOP
007EC252 |. 90 NOP
007EC253 |. 36:A1 108F820>MOV EAX, DWORD PTR SS:[828F10]
007EC259 |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
007EC25B |. 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007EC25F |. 74 06 JE SHORT ezcddax.007EC267
007EC261 |. C640 FF 7D MOV BYTE PTR DS:[EAX-1], 7D
007EC265 |. EB 20 JMP SHORT ezcddax.007EC287
007EC267 |> C600 8D MOV BYTE PTR DS:[EAX], 8D
007EC26A |. 90 NOP
007EC26B |. 33C0 XOR EAX, EAX
007EC26D |. 90 NOP
007EC26E |. 90 NOP
007EC26F |. 90 NOP
007EC270 |. 90 NOP
007EC271 |. 90 NOP
007EC272 |. 90 NOP
007EC273 |. 90 NOP
007EC274 |. 90 NOP
007EC275 |. 90 NOP
007EC276 |. 90 NOP
007EC277 |. 90 NOP
007EC278 |. 90 NOP
007EC279 |. 90 NOP
007EC27A |. 90 NOP
007EC27B |. 90 NOP
007EC27C |. 90 NOP
007EC27D |. 90 NOP
007EC27E |. 90 NOP
007EC27F |. 90 NOP
007EC280 |. 90 NOP
007EC281 |. 90 NOP
007EC282 |. 90 NOP
007EC283 |. 90 NOP
007EC284 |. 90 NOP
007EC285 |. 90 NOP
007EC286 |. 90 NOP
007EC287 |> 90 NOP
007EC288 |. 90 NOP
007EC289 |. 90 NOP
007EC28A |. 90 NOP
007EC28B |. 90 NOP ; CL=80 sf=1
007EC28C |. 90 NOP
007EC28D |. 90 NOP
007EC28E |. 90 NOP
007EC28F |. 90 NOP
007EC290 |. 90 NOP
007EC291 |. 90 NOP
007EC292 |. 90 NOP
007EC293 |. 90 NOP
007EC294 |. 90 NOP
007EC295 |. 90 NOP
007EC296 |. 90 NOP
007EC297 |. 90 NOP
007EC298 |. 90 NOP
007EC299 |. 90 NOP
007EC29A |. 90 NOP
007EC29B |. 90 NOP
007EC29C |. 90 NOP
007EC29D |. 90 NOP
007EC29E |. 90 NOP
007EC29F |. 90 NOP
007EC2A0 |. 90 NOP
007EC2A1 |. 90 NOP
007EC2A2 |. 90 NOP
007EC2A3 |. 90 NOP
007EC2A4 |. 90 NOP
007EC2A5 |. 90 NOP
007EC2A6 |. 90 NOP
007EC2A7 |. 90 NOP
007EC2A8 |. 90 NOP
007EC2A9 |. 90 NOP
007EC2AA |. 90 NOP
007EC2AB |. 90 NOP
007EC2AC |. 90 NOP
007EC2AD |. 90 NOP
007EC2AE |. 90 NOP
007EC2AF |. 90 NOP
007EC2B0 |. 90 NOP
007EC2B1 |. 90 NOP
007EC2B2 |. 90 NOP
007EC2B3 |. 90 NOP
007EC2B4 |. 90 NOP
007EC2B5 |. 90 NOP
007EC2B6 |. 90 NOP
007EC2B7 |. 90 NOP
007EC2B8 |. 90 NOP
007EC2B9 |. 90 NOP
007EC2BA |. 90 NOP
007EC2BB |. 90 NOP ; JGE/JNL(比较带符号数) sf xor of=0
007EC2BC |. 90 NOP
007EC2BD |. 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007EC2C0 |. 8B0D C0838300 MOV ECX, DWORD PTR DS:[8383C0]
007EC2C6 |. 330D C4838300 XOR ECX, DWORD PTR DS:[8383C4]
007EC2CC |. D1E1 SHL ECX, 1
007EC2CE |. 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007EC2D1 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007EC2D5 |. 74 09 JE SHORT ezcddax.007EC2E0
007EC2D7 |. 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007EC2DA |. 83CA 01 OR EDX, 1
007EC2DD |. 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007EC2E0 |> 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007EC2E3 |. 50 PUSH EAX ; /Arg1
007EC2E4 |. FF15 ECCB8300 CALL DWORD PTR DS:[83CBEC] ; \ezcddax.007DD707
007EC2EA |. 83C4 04 ADD ESP, 4
007EC2ED |. 5F POP EDI
007EC2EE |. 5E POP ESI
007EC2EF |. 5B POP EBX
007EC2F0 |. 8BE5 MOV ESP, EBP
007EC2F2 |. 5D POP EBP
007EC2F3 \. C3 RETN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JAE/JNB(比较无符号数)类型 测试 CF=0 二进制代码: 73
007E74F3 |. 56 PUSH ESI
007E74F4 |. 57 PUSH EDI
007E74F5 |. 8B45 08 MOV EAX, DWORD PTR SS:[EBP+8]
007E74F8 |. 50 PUSH EAX ; /Arg1
007E74F9 |. FF15 3CCC8300 CALL DWORD PTR DS:[83CC3C] ; \ezcddax.007DCE03
007E74FF |. 83C4 04 ADD ESP, 4
007E7502 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
007E7505 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
007E7508 |. 90 NOP
007E7509 |. 90 NOP
007E750A |. 36:A1 108F820>MOV EAX, DWORD PTR SS:[828F10]
007E7510 |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
007E7512 |. 8078 FF 0F CMP BYTE PTR DS:[EAX-1], 0F
007E7516 |. 74 06 JE SHORT ezcddax.007E751E
007E7518 |. C640 FF 73 MOV BYTE PTR DS:[EAX-1], 73
007E751C |. EB 20 JMP SHORT ezcddax.007E753E
007E751E |> C600 83 MOV BYTE PTR DS:[EAX], 83
007E7521 |. 90 NOP
007E7522 |. 33C0 XOR EAX, EAX
007E7524 |. 90 NOP
007E7525 |. 90 NOP
007E7526 |. 90 NOP
007E7527 |. 90 NOP
007E7528 |. 90 NOP
007E7529 |. 90 NOP
007E752A |. 90 NOP
007E752B |. 90 NOP
007E752C |. 90 NOP
007E752D |. 90 NOP
007E752E |. 90 NOP
007E752F |. 90 NOP
007E7530 |. 90 NOP
007E7531 |. 90 NOP
007E7532 |. 90 NOP
007E7533 |. 90 NOP
007E7534 |. 90 NOP
007E7535 |. 90 NOP
007E7536 |. 90 NOP
007E7537 |. 90 NOP
007E7538 |. 90 NOP
007E7539 |. 90 NOP
007E753A |. 90 NOP
007E753B |. 90 NOP
007E753C |. 90 NOP
007E753D |. 90 NOP
007E753E |> 90 NOP
007E753F |. 90 NOP
007E7540 |. 90 NOP
007E7541 |. 90 NOP
007E7542 |. 90 NOP
007E7543 |. 90 NOP
007E7544 |. 90 NOP
007E7545 |. 90 NOP
007E7546 |. 90 NOP
007E7547 |. 90 NOP
007E7548 |. 90 NOP
007E7549 |. 90 NOP
007E754A |. 90 NOP
007E754B |. 90 NOP
007E754C |. 90 NOP
007E754D |. 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
007E7550 |. 8B0D AC838300 MOV ECX, DWORD PTR DS:[8383AC]
007E7556 |. 330D B0838300 XOR ECX, DWORD PTR DS:[8383B0]
007E755C |. D1E1 SHL ECX, 1
007E755E |. 894D F8 MOV DWORD PTR SS:[EBP-8], ECX
007E7561 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C], 0
007E7565 |. 74 09 JE SHORT ezcddax.007E7570
007E7567 |. 8B55 F8 MOV EDX, DWORD PTR SS:[EBP-8]
007E756A |. 83CA 01 OR EDX, 1
007E756D |. 8955 F8 MOV DWORD PTR SS:[EBP-8], EDX
007E7570 |> 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
007E7573 |. 50 PUSH EAX ; /Arg1
007E7574 |. FF15 D8CB8300 CALL DWORD PTR DS:[83CBD8] ; \ezcddax.007DCCAB
007E757A |. 83C4 04 ADD ESP, 4
007E757D |. 5F POP EDI
007E757E |. 5E POP ESI
007E757F |. 5B POP EBX
007E7580 |. 8BE5 MOV ESP, EBP
007E7582 |. 5D POP EBP
007E7583 \. C3 RETN
跳转类型全部修改完成,其他的都是重复的,可以jmp到上面的地址完成修复工作。对于跳转类型的判断其实也不难,就是壳把代码分散开来,所以修改的量比较大,所以这个方法也不是个好办法。终于全部的完成,只是给出了基本的方法,大家可以参考这个方法,不必拘于这个方法。整个的CC修复代码二进制文件,复制到007D8000段中,整个的CC地址表,复制到:00828000段中.附件下载:http://www.unpack.cn/viewthread.php?tid=3490 |