HackerCalico / HackerCalico.github.io

1 stars 1 forks source link

No_X_Memory_ShellCode_Loader如何加载自定义payload #1

Open keepgoing2077 opened 3 months ago

keepgoing2077 commented 3 months ago

您好,我想问您一下如果payload反汇编之后有mnemonics数组中没有的汇编指令,可以怎样去解决? 我用Cobalt Strike生成的payload,转换成了和项目下Converter/ShellCode.txt格式一样的txt文件,运行Convert.py后显示:

自定义汇编指令未实现: lodsb 自定义汇编指令未实现: loop 自定义汇编指令未实现: dec 自定义汇编指令未实现: cld 自定义汇编指令未实现: ror 自定义汇编指令未实现: jrcxz 自定义汇编指令未实现: movabs 汇编指令生成完毕: asm.txt

我在Dissassembly.py的mnemonics数组中添加了缺失的这些汇编指令,然后将生成的伪汇编字符串复制在Loader/Loader.cpp中,编译成exe程序后运行显示停止工作,我不知道是否是因为这些汇编指令没有具体的实现,才疏学浅,希望您能指点一下

HackerCalico commented 3 months ago

首先我是不建议把该项目用于上线,因为即使你用解释器反射加载 DLL,反射加载的过程本身还是会改内存权限,体现不出该项目的优势来。 此外这个项目是一个技术项目,需要把项目原理看懂了才能改造使用。 我在 ShellCode.cpp 里给了很多 ShellCode 编写的例子,这么多种功能的 ShellCode 用到的常用指令都实现了。 如果自己写的 ShellCode 需要新指令只能自己添加。但是 CS 的 ShellCode 是不能直接用的,一个原因是 CS 的函数头和我的不一样,和解释器不兼容,另一个原因是 CS 的是一个反射 DLL 加载器,它可能需要对自身原始的机器码进行操作。

keepgoing2077 commented 3 months ago

非常感谢,我不会将项目用于上线,仅用于学习研究

keepgoing2077 commented 3 months ago

您好,不好意思我还有一个问题,您项目中ShellCode.cpp编译之后应该如何转换成机器码格式呢?就是类似Converter/ShellCode.txt的格式。我用VS把ShellCode.cpp编译成了.exe,然后用objdump和xxd提取shellcode机器码,但是用Converter.py转换时也出现了无法转换的汇编指令。而且我自己转的shellcode比您项目文件中的ShellCode.txt长很多..

HackerCalico commented 3 months ago

我把每个函数都定义在不同段了,比如 ExecuteCmd 在 .cmd,用于定位该函数的 ShellCode 位置。 然后用 010 或者其他工具打开 EXE 直接定位到 .cmd 把函数机器码复制出来就行,010 是 ctrl + shift + c 1

keepgoing2077 commented 3 months ago

谢谢您不吝赐教,但是我编译的ShellCode.exe用101打开后和您截图中的好像不一样.. 我的多了很多段,而且用0xcc填充。我用的visual studio2022编译的,设置和您给出的一致,release x64 禁用优化和安全检查等等。搞了半天也不知道什么原因.. 101

HackerCalico commented 3 months ago

平台工具集用 Visual Studio 2022,不用 LLVM (clang-cl)

keepgoing2077 commented 3 months ago

已解决,非常感谢!!!刚接触二进制安全,有太多不懂的地方了...

HackerCalico commented 3 months ago

没事没事