X64下 FF 25 + 00 00 00 00 + 导出表函数地址小测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X64下 FF 25 + 00 00 00 00 + 导出表函数地址小测试相关的知识,希望对你有一定的参考价值。
在X64的情况下,JMP反汇编出来的 FF 25 后面加的是 00 00 00 00 和导出表函数地址
测试代码如下:
void JmpFunctionAddressOfExportTableInX64Using00() { DWORD OldProtect; ULONG_PTR v1 = (ULONG_PTR)GetProcAddress(LoadLibrary(L"user32.dll"), "MessageBoxA"); ULONG_PTR v2 = 0; printf("%p\r\n", v1); printf("%p\r\n", v2 = Sub_1()); VirtualProtect((PVOID)v2, 0x1000, PAGE_EXECUTE_READWRITE, &OldProtect); memcpy((PVOID)((ULONG_PTR)v2 + 48), (PVOID)&v1, sizeof(ULONG_PTR)); VirtualProtect((PVOID)v2, 0x1000, OldProtect, NULL); Sub_8InX64(); }
Sub_1和 Sub_8InX64同样是汇编
Sub_1 PROC lea rax, Sub_8InX64; inc rax mov ebx, [rax] lea rax, Sub_8InX64 add rax, rbx add rax, 5 ret Sub_1 ENDP Sub_8InX64 PROC sub rsp,28H mov r9, 0 mov r8, 0 mov rdx, 0 mov rcx, 0 call Flag1 add rsp,28H ret Flag0 : db 0FFH db 25H db 00H db 00H db 00H db 00H db 00H db 00H db 00H db 00H db 00H db 00H db 00H db 00H Flag1: jmp Flag0 Sub_8InX64 ENDP
注:在这之前要调用下MessageBoxA函数。
以上是关于X64下 FF 25 + 00 00 00 00 + 导出表函数地址小测试的主要内容,如果未能解决你的问题,请参考以下文章
用Arduino 用串口向外发送EE B1 00 00 00 FF FC FF FF这样的长字符,应该怎么办
实现操作系统 00x86 与 x64 架构下函数参数传递的区别