我的项目有问题。我想在任何程序中插入我的代码。我解释一下情况:我的程序获取文件(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
我修复了VirtualSize
,SizeOfRawData
(向所有人添加了24个+对齐)。我还更改了SizeOfImage
和BaseOfCode
(这里我写了新的地址我的asm代码(pLastSectHeader->Misc.VirtualSize
))。
但是当我运行我的应用程序(我注入了)时,我遇到了问题。请帮我解决我的问题:)我试着这几个星期。
P.S我在Plain C + WinAPI上的代码http://pastebin.com/Q4EJvM2J
答案 0 :(得分:0)
ch
是ecx
的一部分,因此您将覆盖您的计数器。此外,x86允许xor
具有内存操作数,因此只需执行xor byte [eax], 2
。此外,您应该加载ecx
而不只是cx
,因为loop
使用了所有ecx
。
请注意,如果您尝试解密的部分未标记为可写,那么您也会遇到问题。
学习使用调试器,下次提供比“我运行应用时遇到问题”更好的问题。