示例,
用
EB 1C
替换E9 1C FD
现在,这个问题。我必须修改多个位置,并且手动调整值使我丧命。我可以使用python的code.google.com/p/pefile做到这一点,我认为这将有助于调整?还是我可以使用其他模块?我可以找到一些示例代码吗?
#1 楼
这不是那么容易,或者很容易出错。如果要在2个字节的位置插入3个字节,则最好执行trampoline
:跳至其他位置,执行所需操作,然后跳回到下一条指令。通过使用蹦床,您还可以保存寄存器。一个小示例可能是这样的:
jmp SomePlace <---destroy old bytes and insert an unconditional jump
NextInst: <----|_________________________
.. |
SomePlace: |
"dancing with wolves" |
jmp NextInst <------- this will jump back to->|
如果想用两个字节替换两个字节,那么几乎所有的十六进制编辑器都具有某种形式的搜索和替换功能。
或者您可以在自己喜欢的实用程序中编写一个简单的脚本。 />一个简单的windbg示例脚本,用于将所有
push XXXX
和68 XXXXXX
字节替换为EB FE
。本示例是一个原型,您需要根据所获得的模式进行调整:更改意外数据,请谨慎使用。)找到后,它使用找到的地址用
search
替换两个字节pattern 68??
。给定范围内找到的所有字节。除此之外,它还在修改之前和修改之后打印出程序集:.foreach /pS4 /ps 9 ( place { # 68?? 401000 l?0x20} ) {u place L1;ew place feeb;u place L1 }
上述脚本的示例输出:
# 68?? pattern search command in windbg
401000 l?0x20 start search from 0x401000 end at 401020
u place l1 disassemble one instruction when pattern found
ew place feeb write word 0xfeeb at found address
dis assemble again
loop with foreach where ps and pS are skip before and skip after bytes
评论
我知道替换相等数量的字节的部分,但是Trampoline可能正是我当时想要的。
–辛加罗
2013年9月14日在8:53
iczelion有一个名为icnipion的旧实用程序,称为代码片段创建器,我记得它在添加masm代码片段时很有用,并且能够修补该exe(不要记得它是否支持多个补丁,或者不尝试一下,看看它是否可以解决您的问题,在伍德曼工具库中可用
– blabb
13 Sep 15'3:41
评论
编辑人员进行了两项更改,我认为这是错误的。一个将pefile更改为PEfile,另一个将空间添加为PE文件。我指的是code.google.com/p/pefile因此,它应该全部很小,只有一个词。LordPE能够根据您的更改来重建PE:woodmann.com/collaborative/tools/index.php/LordPE