标签:byte enter textarea 显示 www ack data- edit txt文本




| 次数 | 执行点 | 结果 |
| 第一次异常 | 0043864D | 成功命中 |
| 第二次异常 | 00438863 | 成功命中 |
| 第三次异常 | 0043AF42 | 成功命中 |
| 第四次异常 | 0043AF77 | 程序执行 |
| 第五次异常 | 0043AF92 | 程序执行 |
| 第六次异常 | 00438863 | 程序执行 |

| 作用 | 地址 |
| 异常处理函数的入口点 | 43AF42 |
| OEP | 409486 |
| IAT被加密的一个地址 | 43CFCD |




| 地址 | 作用 | |
| 1 | 00409486 | OEP |
| 2 | 0043AF59 | 函数内反硬件断点的位置 |
| 3 | 438F9F | 返回正确函数地址的位置 |
| 4 | 43918C | 写入IAT的位置 |
MOV dwSEHAddr,0043AF59
MOV dwGetProcAddress,438F9F
MOV dwWriteIAT,43918C
MOV dwOEP,00409486
MOV dwEAX,0
//清除断点
BPHWCALL//硬件断点
BPMC//内存断点
//异常处理函数,清除硬件断点的位置
BPHWS dwSEHAddr,"x"
//下断点
BPHWS dwGetProcAddress,"x"//GetProcAddress后面,保存EAX
BPHWS dwWriteIAT,"x"//填充IAT后面,将保存的EAX写入到[EDI]
//在OEP处下硬件执行断点
BPHWS dwOEP,"x"//OEP,弹出信息框,成功到达OEP
LOOP0:
RUN
CMP eip,dwSEHAddr
JNZ LOOP0
FILL dwSEHAddr,1A,90
LOOP1:
RUN
CMP eip,dwGetProcAddress
JNZ JMP1
MOV dwEAX,eax
JMP LOOP1
JMP1:
CMP eip,dwWriteIAT
JNZ JMP2
MOV [edi],dwEAX
JMP LOOP1
JMP2:
CMP eip,dwOEP
JNZ LOOP1
MSG "成功到达OEP!!!"MOV dwSEHAddr,0043AF59MOV dwGetProcAddress,438F9FMOV dwWriteIAT,43918CMOV dwOEP,00409486MOV dwEAX,0//清除断点BPHWCALL//硬件断点BPMC//内存断点//异常处理函数,清除硬件断点的位置BPHWS dwSEHAddr,"x"//下断点BPHWS dwGetProcAddress,"x"//GetProcAddress后面,保存EAXBPHWS dwWriteIAT,"x"//填充IAT后面,将保存的EAX写入到[EDI]//在OEP处下硬件执行断点BPHWS dwOEP,"x"//OEP,弹出信息框,成功到达OEPLOOP0: RUN CMP eip,dwSEHAddr JNZ LOOP0 FILL dwSEHAddr,1A,90LOOP1: RUN CMP eip,dwGetProcAddress JNZ JMP1 MOV dwEAX,eax JMP LOOP1JMP1: CMP eip,dwWriteIAT JNZ JMP2 MOV [edi],dwEAX JMP LOOP1JMP2: CMP eip,dwOEP JNZ LOOP1 MSG "成功到达OEP!!!"



Process ID----->所要脱壳的程序进程ID,可在任务管理器中查看,因为ID是十进制,所以取消勾选Hex
Code Start----->代码起始于地址
Code End------->代码终止于地址
New IAT VA----->新的IAT偏移x
Process ID----->所要脱壳的程序进程ID,可在任务管理器中查看,因为ID是十进制,所以取消勾选HexCode Start----->代码起始于地址Code End------->代码终止于地址New IAT VA----->新的IAT偏移






标签:byte enter textarea 显示 www ack data- edit txt文本
原文地址:https://www.cnblogs.com/HOPEAMOR/p/11992063.html