能力值:
(RANK:350 )
|
-
-
2 楼
估计这步出问题了,你替换的字符如果比原来的长,就有可能破坏原字符后面的数据。
如果字符比原来长,你想办法找到指向这字符的指针,指到其他空白处,放上你新的字符串。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
首先谢谢kanxue在百忙中抽出时间帮俺看问题!
是的,替换字符比被替换字符长(替换字符为:c.docno=d.docno and d.ifvalid=1 被替换字符为:c.docno=d.docno)
UE下的原DLL字符如下:
00067870h: 63 00 2E 00 64 00 6F 00 63 00 6E 00 6F 00 3D 00 ; c...d.o.c.n.o.=.
00067880h: 64 00 2E 00 64 00 6F 00 63 00 6E 00 6F 00 20 00 ; d...d.o.c.n.o. .
00067890h: 20 00 20 00 00 00 00 00 ; . .....
需要添加部分
00065f7eh: 61 00 6E 00 64 00 20 00 64 00 2E 00 69 00 66 00 ; a.n.d. .d...i.f.
00065f8eh: 76 00 61 00 6C 00 69 00 64 00 3D 00 31 00 20 00 ; v.a.l.i.d.=.1. .
00065f9eh: 20 00 00 00 00 00 AE 00 00 ; .....?.
我直接将被替换字符替换为下面的部分
61 00 6E 00 64 00 20 00 64 00 2E 00 69 00 66 00 76 00 61 00 6C 00 69 00 64 00 3D 00 31 00 20 00 20 00 00 00 00 00 AE 00 00 63 00 2E 00 64 00 6F 00 63 00 6E 00 6F 00 3D 00 64 00 2E 00 64 00 6F 00 63 00 6E 00 6F 00 20 00 20 00
在做替换之前我把增加文件的长度在文件尾删除掉了.然后用Stud_PE修改Import Table,Export Table及Resourses
我是新手对于您说的"想办法找到指向这字符的指针,指到其他空白处,放上你新的字符串"我再研究研究,想知道有没有类似的例子做参考,在google,baidu及看学论坛里都搜了没有找到!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
在修改时发现.text节中没有足够的空间来放修正后的SQL语句,于是用topo V1.2增加足够的空间(1444字节),然后将修正后的字符串放到新增的空间里,再将指向字符的指针指到新位置处,完成后在程序调用时其他功能正常,只有用到修改部分时不行,提示"字符串空间溢出"!
原SQL语句抓图
ToPo增加空间抓图
把修正后的SQL语句放在新增空间
把字符串原指针指向新位置
执行时出现"字符串空间溢出"感觉应该是新的SQL语句位置不在.text节内,有没有可以调整.text节内空闲空间到一起凑够足够的空间这样功能的软件呢?ToPo不能指定.text节内!
另外另一种思路:
在原SQL语句后加" and d.IfValid=1",其长度为0x20,根据文件头中的
FileAligment为0x1000,于是在.text节尾补加0xFE0个空字符(Zero Block);那么.text节的VirtualSize及VirtualOffset该怎么修改?因增加文件长度再依次将受影响部分进行相应调整,这种思路可行吗?
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
延长text 段将使后面的data段等引起地址后移,有重定位问题。
建议先增加一个节,使节的属性与text段属性一致,然后修改原text 段代码
使其jump 或 call 到新增的节中。这种方法我没有试过,会不会引发异常我不敢肯定,感觉成功的机会还是挺大的,如果不行,就要仔细研究一下x86 的保护机制看有没有机会下手了。
|
|
|