首页
社区
课程
招聘
[求助]代码自定位的问题,哪位大哥帮帮忙!先谢了!
2004-12-2 14:59 4009

[求助]代码自定位的问题,哪位大哥帮帮忙!先谢了!

2004-12-2 14:59
4009
看罗大哥的书看到第十三章的进程控制,才算是慢慢明白汇编的高深,尤其是代码自定位及代码注入,高兴呀。刚看的时候,很兴奋。可越看到后来,迷惑也就越来越多了,大致有几个,小弟实在是想不通了,请哪位大哥帮帮忙,救小弟与水深火热之中:
          1.在注入代码前,要先取到一些API的指针,可这是在注入进程中拿到的,又不是被注入进程的API地址,而注入代码是在被注入进程中活动的,这样的地址拿到有用吗?是不是因为Kernel32每次装入的地址都相同?
          2.在注入代码中,变量的引用要加上偏移量,这个小哥可以理解。可在API调用的时候,也需要这样吗?如果系统Dll在所有进程都注入到同一地址,而我们的CALL又是经过DWORD来触发的,那为什么还要去偏移呢?
          3.GetProcAddress拿到的倒底是什么东西?这是俺最想不通的问题。每次跟踪的时候,EAX返回的也是77D6B064这样的东西。这是什么呀?代表什么涵义?
         还有一些想的不是很通的地方,不过俺希望在高手告诉俺上述的问题后,俺可以自己一点点摸索出来。
         问题可能简单,但对于俺这样的菜鸟,还是很难的。每次总是感觉想到一点点,但不是马上被自己否决了,就是想着想着又跑题了,哪位大侠救救俺吧!!!!

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 1
打赏
分享
最新回复 (4)
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dwing 1 2004-12-2 19:11
2
0
1.动态连接库在每个进程的地址不一定相同,但是都是同一个线性地址的映射.
2.dll的各个导出函数地址都重写到各进程的导入表中.不知为什么要偏移.
3.GetProcAddress取当前进程空间某个dll函数的地址.
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
microstar_top 2004-12-2 21:07
3
0
那GetProcAddress拿到的地址代表什么意思呢?
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2004-12-3 03:09
4
0
所谓的重定位是说把你自己的数据在其他进程中重新定义一个位置.比如你现在在你的代码里用了一个局部变量,叫[ebp-08],但是如果把这段代码嵌入到人家进程,就不能这么用,就必须确定自己的位置(base),然后base+ebp-08才是正确的地方,重定位就是完成查找base的工作.
如果用汇编,一般来说有很多方法重定位,如果用高级语言,就稍微麻烦一些,一般采用指针,有些语言没有指针,可以采用变量索引.
理解了这个原理,应该就可以想到什么时候应该用,什么时候不能用,比如你上面说的获得的API地址,一般不需要重定位,直接CALL就可以,甚至可以JMP过去.
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
microstar_top 2004-12-3 09:27
5
0
经nbw一说,俺清楚多了,万分感谢!
游客
登录 | 注册 方可回帖
返回