PE文件注入

时间:2015-06-01 16:07:50

标签: c winapi assembly code-injection portable-executable

我的项目有问题。我想在任何程序中插入我的代码。我解释一下情况:我的程序获取文件(PE类型)并从第一部分到最后部分启动XOR数据。然后我在上一节下载了我的ASM代码,它解码了这些数据。我将Last Section标记为(Write,Execute,Data)。我的ASM代码:

mov eax, /*I insert address of the beginning of the first section*/
mov ebx, /* I insert orginal EntryPoint (need to use jmp in the end)*/
mov cx, /*I insert number of bytes between Last Section and First*/
DO:
    mov ch, [eax]
    xor ch,2
    mov [eax], ch
    inc eax
    loop DO
jmp ebx

我修复了VirtualSizeSizeOfRawData(向所有人添加了24个+对齐)。我还更改了SizeOfImageBaseOfCode(这里我写了新的地址我的asm代码(pLastSectHeader->Misc.VirtualSize))。

但是当我运行我的应用程序(我注入了)时,我遇到了问题。请帮我解决我的问题:)我试着这几个星期。

P.S我在Plain C + WinAPI上的代码http://pastebin.com/Q4EJvM2J

1 个答案:

答案 0 :(得分:0)

checx的一部分,因此您将覆盖您的计数器。此外,x86允许xor具有内存操作数,因此只需执行xor byte [eax], 2。此外,您应该加载ecx而不只是cx,因为loop使用了所有ecx

请注意,如果您尝试解密的部分未标记为可写,那么您也会遇到问题。

学习使用调试器,下次提供比“我运行应用时遇到问题”更好的问题。