首页
社区
课程
招聘
[旧帖] [求助]DLL 重定向问题 0.00雪花
发表于: 2008-5-22 16:59 4088

[旧帖] [求助]DLL 重定向问题 0.00雪花

2008-5-22 16:59
4088
各位大虾:

最近小弟碰到一问题,就是我在DLL的数据段空闲处插入了一些字符串如下
10006000  41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F     ABCDEFGHIJKLMNO

但是我在DLL中用一下语句调用这个字符串就怎么也不行,因为DLL加载后段地址改变了,不知道怎么办啊,跪求指导

OR ECX,FFFFFFFF
XOR EAX,EAX
Mov EDI, 1000600
REPNZ SCASB
NOT ECX

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
真的没有人能帮忙吗?
2008-5-22 18:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
帮帮忙啊 ,高手们。
2008-5-22 21:50
0
雪    币: 295
活跃值: (346)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
4
除了用重定位表, 还可以这样。

        PUSHA

        CALL NEXT
NEXT:   POP EBP
        MOV EDI, EBP
        ADD EDI, XXXX
        OR ECX FFFFFFFF
        XOR EAX, EAX
        REPNZ SCASB
        NOT ECX
        ...
        POPA   

实际上也是重定位, 病毒与壳常这样
2008-5-23 00:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我是一个新手,如果我直接想修改那个DLL,CALL NEXT这个语句中的NEXT这个标签应该怎么实现呢
2008-5-23 12:37
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
直接说出你想做什么, 可能人家的回答会比较贴切.
2008-5-23 12:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我想在一个DLL文件的数据段加一个字符串,然后在这个DLL里面加一段代码引用这个字符串,现在问题就是我不知道怎样引用这个字符串,因为这个DLL要被动态调用,每次字符串的地址都不一样。
2008-5-23 13:25
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
你没有说明此DLL是只有你在用还是别支程序也会用.
我猜你是要硬编写入到 .DLL , 那也就没什么差别了.

即然 DLL 是固定的一支程序, 那就很好办了.
下列是一种方法:
(你好像有足够的空间写Code, 没的话就增加一个Section吧)

综合你上列问到的问题点, 我猜你应该是要:

原版只是:
     000040300    call 00411111

你新版欲改为
     000040300    call 00422222

     00422222:    处理 MyString          <- 你写的 Code
                        ret

     00503FE0:    'ABCDEFGHIJ',0       <- 你放的 MyString

call 00411111 改成 call 00422222 可硬编写入, 前提是你要会计算.
你现在的难题应该是 [处理 MyString], 因为你要参考到 'ABCDE....'
[处理 MyString]里面你可用下列方法参考到 MyString:

  call  $+5
  pop  edi
  add  edi, 00503FE0 - ($-1)
   亦即 add edi,xxxxxxxx   同样的这个值你要事先算好
                xxxxxxxx = MyString的位址 - pop edi这指令的位址

   如此 edi 就指向 'ABCDE...' 了

一句话, 絶对参考改成相对参考就是了

若你不是要硬编, 而是要你的 EXE 载入 DLL 后, 去改 DLL 的内存
那就当我没讲. 方法不太一样.
2008-5-23 14:23
0
雪    币: 870
活跃值: (1033)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习ing 不错!
2008-5-23 17:56
0
游客
登录 | 注册 方可回帖
返回
//