0%

双机调试

双机调试

双机调试

1.打开源代码文件a.cpp

2.!process 0 0 进程名

3.显示eprocess结构体地址,输命令 .process /i /r /p 地址

4.g

5..reload /user /f

6.在cpp下断点,g

双机调试应用实例:

ps(调试的时候记得看microsoft file有没有文件;virtualKD:将target64复制到虚拟机,然后启动程序)

首先虚拟机按f8关闭强制签名

运行AutoRun.exe,然后在Windbg打开源代码文件,再break(注意这里打开的exe与cpp一定要是同一个文件)

!process 0 0 进程名(显示进程名)

img

显示eprocess结构体地址,输命令 .process /i /r /p 地址,然后输入g继续运行,再.reload /user /f加载符号

在cpp中下断点,断在CreateService函数的位置,一步一步调试到要到的位置,这个位置的选定要结合IDA,首先IDA打开CreateService的dll,下图中圈出来的前三个是该函数的开头字节码。

img

下图是该函数的伪代码,调试发现函数进的是箭头指向的函数,所以直接动态调试进该函数,我们动态调试的目的是需要看该函数的第二个参数是什么。但是由于参数地址后面加了3090,所以在静态分析的时候不能准确判断。

img

img

在windbg中动态调试查看第二个参数压入栈的寄存器的值,在IDA中找到该地址的值,就可以得到我们要的函数字节码

img

对比发现是4800h开头的值

img