将汇编程序字节指令转换为字符串

时间:2018-05-22 04:10:57

标签: c# assembly code-injection

我有像这样的说明

pokeEnableMap = new byte[6]{
        233,
        0,
        0,
        0,
        0,
        144};

我希望他们这样:

pokeEnable = @"call 0x{0:X}
        nop
        nop
        nop";

或者

pokeCodeCave = @"movss [0x{0:X}],xmm0
        fld dword [0x{0:X}]
        fld dword [0x{1:X}]
        faddp
        fstp dword [edi+0x0000014C]
        ret";

如何转换/解释字节?

修改 好吧,我找到了一种方法来实现它并用于文档目的:在找到几十个已结束的项目后,我发现了基于Capstone的9ee1 Capstone.Net的GitHub。在下载了Projectfolder并构建了每个项目之后,CMD没有分配足够的内存,因此在将值从80增加到180后,exe表示它缺少了capstone.dll,而不是Gee.External.Capstone.dll。我从他们的GitHub下载了发行版1.2.2,并且有一个capstone.dll但是这个CMD也没有分配足够的内存。所以我将.dll文件从发行版复制到固定的CMD.exe,现在一切正常。

现在我将我的代码从小数233,0,0,0,0,144转换为十六进制0xE9,0,0,0,0,0x90并在Programm.cs X86部分输入它们,重建CMD并在那里:jmp 0x1005 | nop 或者更复杂的例子:

dec: 139,78,4,185,0,0,0,0,184,0,0,0,0,137,69,216,233,0,0,0,0
hex: 8B 4E 04 B9 00 00 00 00 B8 00 00 00 00 89 45 D8 E9 00 00 00 00
op: mov ecx,[esi+4] | mov ecx,0 | mov [ebp-28],eax | jmp 0x1015

0 个答案:

没有答案