关于“修复重定位表”的一点小问题

米懵逼琪罗 2017-07-15 08:47:23
写程序来实现修改ImageBase后自动修复重定位表,把ImageBase改了之后,第一次是把重定位表里的每个VirtualAddress(除了最后VA和Size都为0的那个)都加上新ImageBase与旧ImageBase间的差值,行不通,改完后程序运行错误。然后第二次,不改VirtualAddress了,直接遍历把重定位表里的每个项都加上了这个差值,结果还是不行。两次试验后都先后用LordPE查看了VirtualAddress和所有项,发现都改了,而且也都加上了正确的差值,ImageBase也改的没错,但就是运行失败,不知道怎么回事,搞了整整2天了,没有一点思绪,而且也不肯定这种修复方式对不对。。。
...全文
530 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_17617071 2017-08-17
  • 打赏
  • 举报
回复
这个问题不好搞
u012997273 2017-08-14
  • 打赏
  • 举报
回复
这是个细活呀,比绣花还细的活!
qq_35049617 2017-07-19
  • 打赏
  • 举报
回复
请问楼主解决了吗?我也在尝试自己修改ImageBase,然后写程序自己修复,遇到了和楼主一样的问题,如果解决的话希望能回复一下,谢谢了。
jklinux 2017-07-16
  • 打赏
  • 举报
回复
不是很明白你的作法, 但可不可像uboot一样,通过自身程序把自己复制到编译时指定的链接地址?
米懵逼琪罗 2017-07-16
  • 打赏
  • 举报
回复
引用 1 楼 jklinux 的回复:
不是很明白你的作法, 但可不可像uboot一样,通过自身程序把自己复制到编译时指定的链接地址?
这是在DLL注入时要使用的技术,所以只能自己修复重定位表,不修复的话即使注入了也使用不了

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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