对程序运行时的一些疑问 忘前辈们指点迷津

fdgsDZ 2017-12-08 03:56:37
今天闲来无事 打算设计一个线程 远程用来获取自己想要的api地址
push    ebp
mov ebp,esp
sub esp,0ch
mov dword ptr [ebp],0000006ch
mov dword ptr [ebp-4],6c642e69h
mov dword ptr [ebp-8],70617370h ;psapi.dll
lea eax,[ebp-8]
push eax
call LoadLibraryA
sub esp,18h
mov dword ptr [ebp],00006573h
mov dword ptr [ebp-4],6c75646fh
mov dword ptr [ebp-8],4d737365h
mov dword ptr [ebp-0ch],636f7250h
mov dword ptr [ebp-10h],6d756e45h ;EnumProcessModules
push eax
lea ecx,[ebp-10h]
push ecx
call GetProcAddress
mov dword ptr [ebp-14h],eax

目的就是先加载包含函数的api 然后用获取到的api句柄 用GetProcAddress 获取想要用到api的地址

但我把这段代码贴到一个exe中 运行时却出现了问题 用GetProcAddress时却返回了0

我记得以前在论坛看到过 说是用一个pai 必须输入表包含此api

然后我查看了下输入表 发现这个exe 确实没有 GetProcAddress 但同时也没有LoadLibraryA 为什么 LoadLibraryA 成功获取到了api的模块句柄 但 GetProcAddress 却无法使用? 望前辈们指点迷津
...全文
341 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fdgsDZ 2017-12-15
  • 打赏
  • 举报
回复
先谢谢版主大人回复 我用了getlasterror 也是调用失败 感觉可能是因为重定位的问题 我这段代码没考虑重定位 直接用了某插件的api函数地址
赵4老师 2017-12-15
  • 打赏
  • 举报
回复
paschen 2017-12-08
  • 打赏
  • 举报
回复
If the function fails, the return value is NULL. To get extended error information, call GetLastError. 调用GetLastError获取失败的原因,进而再进行分析 https://msdn.microsoft.com/en-us/library/ms683212(VS.85).aspx

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧