首页
社区
课程
招聘
[求助]关于strlen等函数的重定位的一些疑问
发表于: 2010-11-21 11:26 5260

[求助]关于strlen等函数的重定位的一些疑问

2010-11-21 11:26
5260
我遇到的情况是这样的:
开始不清楚strlen这样的函数是否需要重定位,于是抱着试试看的心态,在一个控制台程序中,对于注入代码中的strlen没有进行重定位,程序没任何问题,庆幸,以为这样的函数不需要重定位。
但是当把这段代码移植到mfc程序中,然后再进行代码注入。程序崩溃了,问题定位到了strlen。

~~
问题已解决,但是产生如下疑问:
1. strlen这样的函数是否需要重定位,和一般的windows api重定位有什么区别?
2. 为什么在控制台程序下编译后的代码,即使没有对strlen重定位,注入的代码也可以正常运行。而在mfc程序中就不行了呢?这有什么差异
~~
我是新手,望大牛多多指教~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 20
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
基址不一样 就会需要重定位
你到那种随机加载基址的系统(比如win7)里面,所有的API都要重定位了。。。
2010-11-21 20:27
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
如果宿主编译的时候“代码生成”选的是ML或MT,strlen连API都不是,这种情况下如果你的注入代码不是用同一个版本的VC编译的话,你连strlen的入口都找不到。就算宿主是MD方式编译的,但如果你的代码不是用同一个版本VC编译的,因为加载的C运行库不同,strlen的地址是不同的,也需要通过输入表得到函数入口(实现比较麻烦)。
要说通用方法的话,strlen这种简单的函数,在注入代码里面还是干脆自己汇编实现好了。
2010-11-22 20:27
0
游客
登录 | 注册 方可回帖
返回
//