魔兽贱队 发表于 2011-3-11 10:05:00

查询DLL中的函数入口地址代码(C )(汇编爱好者必备)

使用VC6。0自带的depends查找dll中函数的入口地址时,有时会发现计算出的函数入口地址与实际不同,这样你在实际调用时无法调用到该函数,使用以下方法可以清楚的列出一些系统dll函数入口地址,以便asm调用。#include <windows.h>
#include <stdio.h>
typedef void (*MYPROC)(LPTSTR);
int main()
{
HINSTANCE LibHandle;
MYPROC ProcAdd;



LibHandle = LoadLibrary("kernel32"); //装载目标dll kernel32
printf("KERNEL32 -- msvcrt LibHandle = //x%x\n", LibHandle); //DLL入口DLL

ProcAdd=(MYPROC)GetProcAddress(LibHandle,"WinExec"); //获取函数入口地址
printf("WinExec -- LoadLibrary = //x%x\n", ProcAdd);



LibHandle = LoadLibrary("user32"); //装载目标dll USER32
printf("USER32 -- msvcrt LibHandle = //x%x\n", LibHandle); //DLL入口DLL

ProcAdd=(MYPROC)GetProcAddress(LibHandle,"MessageBoxA"); //获取函数入口地址
printf("MessageBoxA -- LoadLibrary = //x%x\n", ProcAdd);

char s;
scanf("%d",s);
return 0;
}
页: [1]
查看完整版本: 查询DLL中的函数入口地址代码(C )(汇编爱好者必备)