我正在使用一些x86汇编代码,因此我需要从一个可执行文件中抓取该代码并将其粘贴到另一个可执行文件中。手写功能就可以了。但是,我在使用GetCommandLine等返回ASM中的参数时遇到了麻烦。即它返回Unicode,而我需要ANSI中的参数。我没有处理设置库调用和进行转换的方式,而是编译了一个小程序,该程序使用命令行参数来重用代码。

现在我有了两个可执行文件:一个具有已解析的命令行参数并放置在正确的位置
-两个内部具有实际的汇编功能代码。

第一个可执行文件具有NOP功能的空间,我需要一种粘贴逻辑的好方法。我已经看过Asm2clipboard,Code Ripper和Data Ripper,但它们仅具有撕开程序集的功能,而不能粘贴回去。

我知道我必须修复地址等问题,但是我无法在Olly或其他工具中找到在可执行文件之间移动代码的方法。我可以进入HexEdit或类似的工具,但我希望有一种更简单的方法。

评论

嗯,GetCommandLineA或GetCommandLineW?为什么不简单地根据您的环境使用正确的语言呢?

#1 楼

对于OllyDbg,它是


从CPU窗口中选择代码Binary
在目标CPU窗口中选择Binary Copy
相同,但选择Binary Paste


#2 楼

disasm
使用IDA(为什么只有纯黑?免费使用IDA可以解决问题),或者使用带有BeaEngine插件的OllyDbg(它具有一些特定的ASM语法选项)使用增量地址尽可能多地使用标签-稍后再做很麻烦
导出到ASM
修改ASM语法以使其可重新组装>

使您的ASM代码独立于EIP并以十六进制形式对其进行修补


用Iczelion的代码段创建器重新注入(它将ASM代码注入来自您的OBJ)



#3 楼

Multiline Ultimate Assembler是OllyDbg的多行(最终)汇编程序(和反汇编程序)插件。这是修改和扩展已编译的可执行功能,编写代码洞等的理想工具。

http://rammichael.com/multimate-assembler