int main()
{
EnableDebugPriv();
HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS,0,5924);
if (!processHandle)
{
DWORD err = GetLastError();
printf("打开进程失败,errorcode:%d\n", err);
getchar();
return 0;
}
char*buffer = malloc(0x1000);
ZeroMemory(buffer,0x1000);
ReadProcessMemory(processHandle, (PVOID)0x00007FF7C3F58100, buffer,0x50,NULL);
ud_t ud_obj;
//初始化
ud_init(&ud_obj);
//设置指令模式
ud_set_mode(&ud_obj, 64);
//设置语法类型
ud_set_syntax(&ud_obj, UD_SYN_INTEL);
//设置解析OPCODE的起始地址 这个值是在目标进程中的值
ud_set_pc(&ud_obj, 0x00007FF7C3F58100);
//参数2 需要反汇编的地址 反汇编的长度
ud_set_input_buffer(&ud_obj, buffer, 0x50);
while (ud_disassemble(&ud_obj))
{
//ud_insn_off(&ud_obj) 获得当前的指令地址
//ud_insn_asm 获取当前的反汇编后的字符串
printf("%I64x %s %s\n", ud_insn_off(&ud_obj), ud_insn_hex(&ud_obj), ud_insn_asm(&ud_obj));
}
getchar();
return 0;
}
Udis86反汇编引擎的使用
最新推荐文章于 2023-06-27 13:41:01 发布