x64DLL模块线程函数地址定位
环境
1:win10最新版
2:x64Dbg
DLL代码—3环
#define _CRT_SECURE_NO_WARNINGS
#include "pch.h"
#include <iostream>
#include "windows.h"
DWORD WINAPI ThreadProc(LPVOID A)
{
char zifu[] = "jinrule";
for (;;)
{
Sleep(6000);
std::cout<< zifu<<std::endl;
}
return TRUE;
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
HANDLE hThread = ::CreateThread(NULL , NULL, ThreadProc, NULL, 0,0);
break;
}
return TRUE;
}
定位过程
这个是我们需要定位的线程函数地址:DWORD WINAPI ThreadProc(LPVOID A)
1:用x64Dbg打开dll并执行到dll模块的入口地址,如图:
2:在x64Dbg在CreateThread函数下断点,如图:
3:找到第三个CreateThread参数,就是创建线程的函数入口点,如图:
根据x64的函数调用约定:RCX—RDX—R8—R9; R8为第三个参数;
那么线程函数地址就是:0000000180001630
总结
就是对windowsAPI进行下断点,在根据API的传递参数来确定线程要执行的函数地址。
不懂可以私信我或在评论区留言,(手留余香)对您有用请随手点赞。