64位下 hook API 函数

PC_9527 2014-03-13 12:40:30
自己写了一个32位下工作的dll, 但是在 64位下 无法注入 能否 在 32位代码 基础上修改一个64位的
...全文
1236 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
csh20140320 2015-08-13
  • 打赏
  • 举报
回复
d73484394@163.com 十分感谢
csh20140320 2015-08-13
  • 打赏
  • 举报
回复
楼主,搞定了吗,如果可以给我发一份64位下的注入源码学习一下好吗
ma_yingkun 2015-05-13
  • 打赏
  • 举报
回复
1. 64bit sys 下 注入 64 bit 进程,只要注入exe,和dll就64位是ok的,无需置疑 2. 64bit sys 下 注入 32 bit 进程,你企图 从 64 bit 的kernel32.dll 里面导出LoadLibraryA,通过CreateRemoteThread创建一个线程来插入32 bit 进程,这样肯定失败,理论上是说不通的, WOW64 是在用户模式下实现的,作为 ntdll.dll 和内核之间的层。WOW64 及其支持的一些 DLL 仅仅是可以加载到 32 位进程中的 64 位的 DLL........., 非要hook 32bit exe 可以写驱动hook,或者 全局hook api。
pigpigappleapple 2014-04-23
  • 打赏
  • 举报
回复
,学习学习
PC_9527 2014-03-17
  • 打赏
  • 举报
回复
引用 11 楼 myjisgreat 的回复:
win7 没有问题,我的钩子库就是32位和64位两套平行钩子系统的实现 猜想win8可能对注入比较严格吧,原理上不存在问题 还有提醒LZ,如果你的DLL使用了共享内存段,要注意64位DLL和32位DLL共享内存段是隔离的
我现在HOOK的是任务管理器的OpenProcess函数,却发现Win8 64位的任务管理器好像没有OpenProcess?这里暂不讨论,另外开帖。
myjisgreat 2014-03-14
  • 打赏
  • 举报
回复
win7 没有问题,我的钩子库就是32位和64位两套平行钩子系统的实现 猜想win8可能对注入比较严格吧,原理上不存在问题 还有提醒LZ,如果你的DLL使用了共享内存段,要注意64位DLL和32位DLL共享内存段是隔离的
ganmaojiushijiu 2014-03-14
  • 打赏
  • 举报
回复
重新编译就好了,然后vs就会调用64位的动态库去编译了
PC_9527 2014-03-14
  • 打赏
  • 举报
回复
引用 8 楼 u012997273 的回复:
全局钩子安装了,没注入到其他进程,原因有很多,你可以先试试远程线程注入。
首先可能还是考虑dll版本问题,我再试试。
u012997273 2014-03-14
  • 打赏
  • 举报
回复
全局钩子安装了,没注入到其他进程,原因有很多,你可以先试试远程线程注入。
u012997273 2014-03-14
  • 打赏
  • 举报
回复
呵呵,楼主,你注入一个dll到其他进程,和那个进程去加载这个dll是一样的。 32位程序,只能加载32位的dll 64位的程序,只能加载64位的dll 这个是基本的,我上面说的也是这个意思,在64位系统上,有64位程序,也有32位程序
PC_9527 2014-03-14
  • 打赏
  • 举报
回复
引用 4 楼 u012997273 的回复:
楼主还需要注意一下,64位系统是兼容32位程序的,即在64位环境下,楼主需要个版本的dll,一个负责注入32位程序,一个负责注入64位程序。 一如果没有特殊的代码,能直接编译通过的
还是不行,编译成64位版本DLL,在Win8(64位) 发现钩子虽然安装成功了,但是无法注入到其他进程,而在32位下是可以的。可以排除杀毒软件的干扰(没有装任何杀毒),权限问题可以排除,SYSTEM权限。只是一点也许有问题,我用一个32位程序去调用的这个64位版本dll,不知道这样是不是失败的原因? 还有我是在32位系统下用x64编译生成的64位dll,这里有没有问题
PC_9527 2014-03-14
  • 打赏
  • 举报
回复
引用 3 楼 oyljerry 的回复:
编译64位版本DLL
还是不行,编译成64位版本DLL,在Win8(64位) 发现钩子虽然安装成功了,但是无法注入到其他进程,而在32位下是可以的。可以排除杀毒软件的干扰(没有装任何杀毒),权限问题可以排除,SYSTEM权限。只是一点也许有问题,我用一个32位程序去调用的这个64位版本dll,不知道这样是不是失败的原因?
u012997273 2014-03-14
  • 打赏
  • 举报
回复
楼主还需要注意一下,64位系统是兼容32位程序的,即在64位环境下,楼主需要个版本的dll,一个负责注入32位程序,一个负责注入64位程序。 一如果没有特殊的代码,能直接编译通过的
oyljerry 2014-03-13
  • 打赏
  • 举报
回复
编译64位版本DLL
PC_9527 2014-03-13
  • 打赏
  • 举报
回复
好的 我试试
mayudong1 2014-03-13
  • 打赏
  • 举报
回复
用64位编译器重新编译一下就可以了吧,应该没什么代码是32位特有的吧

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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