您的当前位置:首页WIN32汇编-第10课

WIN32汇编-第10课

2020-08-15 来源:飒榕旅游知识分享网
WIN32汇编-第10课

2012年12月21日 星期五 15:59

1.硬件断点

硬件断点:Dr0 - Dr3

清除硬件断点的方法:人为制造一个异常,然后修改CONTEXT中的硬件断点寄存器,这样就可以清除硬件断点了.

2.内联汇编中调用API

不能够直接call API函数名称,应该这只是一个跳,如图1

图1 调用MessageBox为例,3种方式 ①

如图2

图2 结构如图3

图3 ②声明API 如图4

图4 ③推荐的写法

如图5

图5

3.内联汇编访问结构体

如图6

图6

4.内联汇编中SIZE,LENGTH,TYPE

int iArray[8],下面是等价操作:

__asm C Size

LENGTH iArray sizeof(iArray)/Sizeof(iArray[0]) 8 SIZE iArray sizeof(iArray) 32

TYPE iArray sizeof(iArray[0]) 4 如图7

图7

5.内联汇编中的_EMIT

_EMIT相当于MASM中的db 在花指令中的应用如图8

图8 花指令的效果如图9:

图9

6.调试API相关

DebugBreak

①下断点

如果使用该函数的进程没有正在被调试的话,那么该进程通常会终止,如图10

图10 该函数实现是int 3,如图11

图11

IsDebuggerPresent

②检查该进程当前是否在调试状态 如图12

图12 运行程序看该函数实现,如图13

图13

图中那一个字节的标志就行,1表示正在被调试,2表示没有被调试(如图OD默认已经把这个标志修改为0了)

7.调试器框架

调试程序的步骤

①创建一个进程或捆绑我们的程序到运行中的进程上. API:CreateProcess ②等待调试事件 API: WaitForDebugEvent ③响应调试事件. 调试事件结构体:DEBUG_EVENT ④继续执行被调试的进程. ⑤继续这一无尽循环直到被调试进程结束

因篇幅问题不能全部显示,请点此查看更多更全内容