-
-
[原创][shellcode框架(5)] 多文件shellcode框架
-
发表于: 2017-4-15 11:14 3982
-
做shellcode开发很久了,以往就做简单的补丁,最近打算使用shellcode开发大工程。发现TK提供的shellcode模板不能满足现状了,打算将代码分门别类的放在不同的文件里,多文件shellcode框架的需求就来了。以前我也开题询问过有经验的朋友。
[求助]shellcode开发 如何将多个c文件中的函数合并一起dump为二进制文件 http://bbs.pediy.com/thread-216548.htm
从理论到实践,以及到代码编码测试,2天的时间。多文件shellcode框架就完成了,进过几周的开发测试完善,算是能满足需要了。
代码我不打算贴出来了(几年后我打算把整个工程共享)。这里我只说说实现原理
明确下目标:1.将shellcode涉及的函数紧密的排列在一起,2准确的找到shellcode其实位置和结束位置大小,
解决以上问题的办法 1. 利用(linker->Debugging-Getnerate Map File)map文件获取到shellcode所涉及的函数名,2将所需函数名存放到 funs.txt中;再利用linker中的命令行中添加 /ORDER:@"funs.txt" ;3将shellcode函数放在funs.txt文件的开头,将endSign放在末尾,计算大小shellcodeSize = (DWORD)endSign-(DWORD)shellcode ; dump从shellcode函数开始,大小sheLlcodesize就可以了。
我自己写个gui的工程辅助快速开发测试。
0. 18496 18.06K 显示当前shellcode大小。
1. Execute 直接调用 shellcode() 函数可以vs10辅助动态调试
2. MemoryExec 使用virtualAlloc 申请内存copy shelloce到内存执行
3. Jnject Exec 将shellcode 注入svchost.exe 测试
4 DUMP 直接dumpshellcode到文件,支持简单的异或编码
5. Read Map 读取map文件中的函数,x_ 作为过滤条件(所以函数都要有x_开头)
6. Rand funs 打乱函数顺序
7 Write Funs 将函数写入到 funs.txt文件中
8. shellcode 将写入funs.txt第一行位置
9. EndSign 写在funs.txt最后一行
10. ConfigData将作为存放配置文件的函数写入到funs.txt中
11. Open Map file 打开浏览map文件
12 Open funs file 打开浏览funs.txt文件
13 99funs 显示当前函数个数
14 Global:580显示了当前 global 全局变量的大小。
这里我讲解下 将shellcode代码紧密编译在一起的流程
vs10 启动,运行程序 1. ReadMap 读取map文件中的函数到列表,2 Rand Funs打乱顺序(可省略) 3.Write Funs 将函数写入到funs.txt中,关闭程序再次利用vs10编译完成。这样shellcode就在一起了。 前提:设置vs工程生成map和使用funs.txt中的函数列表作为函数安排顺序
这里我将所有的shellocode代码文件都是用.c文件,这里需要设置下预编译头; mfc的代码在使用。c文件的时候要
extern "C" { #include "Server.h" // #include <vector> // #include <stdio.h> // // #include <algorithm> };
导入。
不明白的可以留言
这样所有的函数就能排列在一起了。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)