基础的东西不想多讲,简单的提一句,具体请问度娘。
Windows的PE加载器会从执行文件目录下寻找DLL,若是找不到再去其余地方找。
把咱们特定的DLL假装成系统DLL,而后放在执行文件目录下,就能实现DLL劫持。
劫持来干吗? 确定是要在被干程序体内有一席之地,而后想干什么就干什么。好比劫持ws2_32.dll能够实现抓包,改包,转向等。
如何伪造?
固然是伪造导出表啦,导出表是一个DLL最总要的部分。
LPK.dll。 网络
#pragma comment(linker, "/EXPORT:LpkInitialize=_gamehacker_LpkInitialize,@1") #pragma comment(linker, "/EXPORT:LpkTabbedTextOut=_gamehacker_LpkTabbedTextOut,@2") #pragma comment(linker, "/EXPORT:LpkDllInitialize=_gamehacker_LpkDllInitialize,@3") #pragma comment(linker, "/EXPORT:LpkDrawTextEx=_gamehacker_LpkDrawTextEx,@4") #pragma comment(linker, "/EXPORT:LpkExtTextOut=_gamehacker_LpkExtTextOut,@6") #pragma comment(linker, "/EXPORT:LpkGetCharacterPlacement= _gamehacker_LpkGetCharacterPlacement,@7") #pragma comment(linker, "/EXPORT:LpkGetTextExtentExPoint=_gamehacker_LpkGetTextExtentExPoint,@8") #pragma comment(linker, "/EXPORT:LpkPSMTextOut=_gamehacker_LpkPSMTextOut,@9") #pragma comment(linker, "/EXPORT:LpkUseGDIWidthCache=_gamehacker_LpkUseGDIWidthCache,@10") #pragma comment(linker, "/EXPORT:ftsWordBreak=_gamehacker_ftsWordBreak,@11")
是的,纯手写伪造很麻烦,一下子还得写转发代码~~~。 若是某DLL的导出函数比较多,那真是一个累人的活儿。
在这里我介绍一款比较好用的自动生成工具:
aheadlib
功能:根据输入DLL的导出表生成劫持源码。
把生成的源码载入vc编译器是能够正常编译的。
选项很简单,本身摸索,通常默认便可。
在生成的代码中,你能找到:
AheadLib_ + 原始DLL导出函数名 ()
这样的函数
好比:函数
ALCDECL AheadLib_gethostbyname(void) { GetAddress("gethostbyname"); __asm JMP EAX; }
你能够在这个函数中添加你本身的响应代码。 拦截就直接retn +参数长度。孩子,知道抓包工具该怎么写了吧?
下面介绍一个好玩的拦截例子。能够注入到大部分的企鹅网络游戏客户端。
在system32目录下有一个 rasadhlp.dll。
企鹅游戏在启动的时候会加载rasadhlp.dll,并且仍是在保护机制开启以前。
因此劫持rasadhlp.dll就能过保护轻松注入腾讯游戏。【今天的LOL至少还能注入 2015.7.12】
使用工具,生成一份rasadhlp.dll的劫持代码。
而后在DllMain中添加一些代码。
<ignore_js_op>
添加的代码:
注意Load() 函数时工具生成的。这个函数用来加载原始DLL。
工具
HMODULE hLoad; char *v; hLoad=LoadLibrary("zr.dll"); if (hLoad==NULL) { MessageBoxA(NULL,"没法载入 zr.dll",NULL,MB_OK); goto loading; } v=(char *)GetProcAddress(hModule,"TxEntry"); if(!v) { MessageBoxA(NULL,"没法找到 TXEntry 函数",NULL,MB_OK); goto loading; } CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)v,0,0,NULL); loading: return Load();
这段代码的目的是加载zr.dll而后调用TxEntry函数。
注入进去后就能够为所欲为的干一些不和谐的事情。 好比搜索内存/修改内存。
到了如今,就能够去易语言论坛找一些最新的 无限视距DLL 注入进去试试啦。
<ignore_js_op>
当按下确认按钮后 TP保护才开始加载。
相关工具已经打包。spa