-
-
[原创] 抛砖引玉之gcc生成可可携带字符串的shellcode
-
发表于:
2018-10-5 16:19
6506
-
[原创] 抛砖引玉之gcc生成可可携带字符串的shellcode
原理:
entry_x86_64.S 入口汇编代码,用于获取PEB,并调用c代码。编译得出entry.o。链接的时候此文件需要放在前面,这样使代码放在shellcode头部。其中用到的偏移量随着各个操作系统版本的不同也有所变化,需要注意。
sc.c shellcode的c代码部分,这里只拿kernel32.dll的handle,并进一步得到其他相关的数据。然后调用MessageBoxA。需要注意的是,c代码部分不能有全局变量,否则会出错。
winapi.h windows的一些api的声明。
sc.lds 链接脚本,将text代码段和rdata只读数据段直接拼接在一起。传入到ld命令。
exec.c shellcode的测试程序,allocate一处读写执行的内存,拷贝shellcode到此内存,然后直接调用。
Makefile 编译脚本,
后记:
这里只是介绍gcc生成shellcode,其中有些细节也是可以展开的但是时间有限这里就不展开了,况且论坛里已经有帖子讨论相关的内容了。另外关于编译脚本,不懂Makefile的也要进行一定的学习才能基于本例继续开发。
这个例子也是从我另一个弄着自己玩的pubg项目里抽取出来的,别的部分是黑科技,就不放出来了。
通过linker script实现自定义section链接,将代码段和只读数据段链接到一起,生成一个dll,再用objcopy生成binary。
要求:
windows10,装上debian或者ubuntu应用
也可以直接用linux
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-6-12 16:00
被malokch编辑
,原因: