m_hModule=LoadLibrary(tzPath);
return (m_hModule != NULL);
}
★
在代码中可以看到,使用LoadLibrary方式加载系统目录下的LPK.DLL。加载完成后就要实现导出函数的转发了,这步是很关键的。
首先要获得原函数地址。核心代码如下:
★
FARPROC WINAPI GetAddress(PCSTR pszProcName)
{
FARPROC fpAddress;
CHAR szProcName[16];
TCHAR tzTemp[MAX_PATH];
fpAddress = GetProcAddress(m_hModule, pszProcName);
return fpAddress;
}
★
然后将我们构造的导出函数一一转发。核心代码如下:
★
ALCDECL gamehacker_LpkInitialize(void)
{
GetAddress("LpkInitialize");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkTabbedTextOut(void)
{
GetAddress("LpkTabbedTextOut");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkDllInitialize(void)
{
GetAddress("LpkDllInitialize");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkDrawTextEx(void)
{
GetAddress("LpkDrawTextEx");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkEditControl(void)
{
GetAddress("LpkEditControl");
__asm jmp DWORD ptr [EAX];
}
ALCDECL gamehacker_LpkExtTextOut(void)
{
GetAddress("LpkExtTextOut");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkGetCharacterPlacement(void)
{
GetAddress("LpkGetCharacterPlacement");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkGetTextExtentExPoint(void)
{
GetAddress("LpkGetTextExtentExPoint");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkPSMTextOut(void)
{
GetAddress("LpkPSMTextOut");
__asm JMP EAX;
}
ALCDECL gamehacker_LpkUseGDIWidthCache(void)
{
GetAddress("LpkUseGDIWidthCache");
__asm JMP EAX;
}
ALCDECL gamehacker_ftsWordBreak(void)
{
GetAddress("ftsWordBreak");
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-42986-3.html
先转再看
只不过马云的办公室和祖宗的墓地风水好
并不是什么耻辱
应该是个不错的选择