lpkdll_lpk.dll 正常吗_lpk.dll专杀(2)

电脑杂谈  发布时间:2017-04-23 10:06:55  来源:网络整理

1、构造一个与系统目录下LPK.DLL一样的导出表;

2、加载系统目录下的LPK.DLL;

3、将导出函数转发到系统目录下的LPK.DLL上;

4、在初始化函数中加入我们要执行的代码。

我们使用VC来进行开发,首先是定义导出函数。核心代码如下:

★

#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")

★

以上是导出表中的函数,LPK.DLL比较特殊,在导入表中有一项不是函数是数据,因此数据这部分要单独处理。核心代码如下:

★

EXTERNC void __cdecl gamehacker_LpkEditControl(void);

EXTERNC __declspec(dllexport) void (*LpkEditControl[14])() = {gamehacker_LpkEditControl};

★

LpkEditControl这个数组有14个成员,如上定义即可,后面我们还需要将真正的数据复制过来。

加载系统目录下的LPK.DLL。核心代码如下:

★

inline BOOL WINAPI Load()

{

TCHAR tzPath[MAX_PATH];

TCHAR tzTemp[MAX_PATH * 2];

GetSystemDirectory(tzPath, MAX_PATH);

lstrcat(tzPath, TEXT("\\lpk"));


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-42986-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...