我有一个基本的XOR解码器,可以在Linux上完美运行,但是当我尝试将其移至Windows中的exe时,它会失败。由于此问题仍然存在,因此我将保留此问题以供历史参考。在此
建议在汇编解码器中,.text部分在Windows中不可写。如何使此程序集解码器作为exe从Windows中的.text部分执行和解码/异或?

将编码器转换为win 7 64的步骤> nasm -fwin64 Workingwin7messageBoxassembly.nasm -o xorencoder.obj
从obj文件中提取shellcode
插入编码器.nasm
组装编码器nasm -fwin64 encoder.nasm -o xorencoder.obj
在Windows上,使用golink创建exe。 golink \ console xorencoder.obj
运行exe并崩溃。 />当我包括从组装/链接的Workingwin7messageBoxassembly.nasm中提取的shellcode并尝试让下面的解码器调用并解码该shellcode时,这种方法会中断。下面的encode_shellcode:部分中的shellcode是在此处找到的win 7-64消息框的XORed版本。尝试对“ encoded_shellcode”的内容进行XOR时,此方法有访问冲突。可写的,以允许解码器从.text节读取以进行解码。它仍然失败。如何获取此汇编解码器进行解码?

评论

我不明白为什么会有两个帖子针对同一问题。

这个问题专门与使.text节可写有关。另一个问题是笼统的。

#1 楼

我在golink链接器中没有看到该选项,但是如果使用ie link.exe(Microsoft(R)增量链接器版本14.11.25506.0),则可以使用/SECTION参数指定该选项。链接/ SUBSYSTEM:CONSOLE / ENTRY:开始xor.obj /SECTION:.text,RWE


之后,如果在xdbg中显示内存映射,您将看到更改:



之后,编码器可以修改其中的代码