能力值:
( LV3,RANK:20 )
|
-
-
2 楼
你测试了Evilor的方法,撤除所有的tenslx.dll线程。
如果再没有报非法,就可以推理没有其他的地方,对不对啊。。。?
可能我理解错了。。。
|
能力值:
( LV4,RANK:40 )
|
-
-
3 楼
http://115.com/file/bem2dgx7 这是答案吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
TX系列的网络游戏里,我用XT PT 好像都看不到 TenSLX.dll 创建的线程
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我是看了你发的教程,才来问这些问题的,这个教程里的 猜想可能有误,就跟我说的一样,明明没有在读取内存了,为什么还会被发现,报非法呢
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
下载了,不过需要密码?
可以分享吗?
谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
密码是 www.begin5.com
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
感谢分享。·
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
谢谢您的回复和分享 !
|
能力值:
(RANK:290 )
|
-
-
10 楼
我 一般 之间 INline 全部和 HOOK 线程有关的函数
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
按你的描述
游戏完全可以检测关键线程是否被停止,如果被停了,也提示非法
这只是按你的说法理论推导,,无事实依据.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
那我把那个提示非法的线程给暂停了,CE就可以任意玩弄QQ游戏大厅了。说明没其他线程来其他线程来检测了,要么就是被我暂停的这个线程会去检测 其他线程有没有暂停吧?
|
能力值:
( LV9,RANK:160 )
|
-
-
13 楼
我不习惯每次都用工具
我做了个假的TenSLX.dll代替它就可以了
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
假的不会被游戏程序发现 比如比较版本 特征码什么的?
|
能力值:
( LV9,RANK:160 )
|
-
-
15 楼
不会的我用CE搜了30分钟都没出非法
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
高人,假的 DLL 怎么写 能传授不?
|
能力值:
( LV9,RANK:160 )
|
-
-
17 楼
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 头文件
#include <Windows.h>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
#pragma comment(linker, "/EXPORT:GetTSObject=_AheadLib_GetTSObject,@1")
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 宏定义
#define EXTERNC extern "C"
#define NAKED __declspec(naked)
#define EXPORT __declspec(dllexport)
#define ALCPP EXPORT NAKED
#define ALSTD EXTERNC EXPORT NAKED void __stdcall
#define ALCFAST EXTERNC EXPORT NAKED void __fastcall
#define ALCDECL EXTERNC NAKED void __cdecl
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AheadLib 命名空间
namespace AheadLib
{
HMODULE m_hModule = NULL; // 原始模块句柄
DWORD m_dwReturn[1] = {0}; // 原始函数返回地址
// 加载原始模块
inline BOOL WINAPI Load()
{
TCHAR tzPath[MAX_PATH];
TCHAR tzTemp[MAX_PATH * 2];
lstrcpy(tzPath, TEXT("TenSLX"));
m_hModule = LoadLibrary(tzPath);
if (m_hModule == NULL)
{
wsprintf(tzTemp, TEXT("无法加载 %s,程序无法正常运行。"), tzPath);
MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP);
}
return (m_hModule != NULL);
}
// 释放原始模块
inline VOID WINAPI Free()
{
if (m_hModule)
{
FreeLibrary(m_hModule);
}
}
// 获取原始函数地址
FARPROC WINAPI GetAddress(PCSTR pszProcName)
{
FARPROC fpAddress;
CHAR szProcName[16];
TCHAR tzTemp[MAX_PATH];
fpAddress = GetProcAddress(m_hModule, pszProcName);
if (fpAddress == NULL)
{
if (HIWORD(pszProcName) == 0)
{
wsprintf(szProcName, "%d", pszProcName);
pszProcName = szProcName;
}
wsprintf(tzTemp, TEXT("无法找到函数 %hs,程序无法正常运行。"), pszProcName);
MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP);
ExitProcess(-2);
}
return fpAddress;
}
}
using namespace AheadLib;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 入口函数
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
//DisableThreadLibraryCalls(hModule);
//return Load();
}
else if (dwReason == DLL_PROCESS_DETACH)
{
Free();
}
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_GetTSObject(void)
{
// 保存返回地址
__asm POP m_dwReturn[0 * TYPE long];
// 调用原始函数
GetAddress("GetTSObject")();
// 转跳到返回地址
__asm JMP m_dwReturn[0 * TYPE long];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
伪照一下就可以了
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
膜拜下。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
专注wangweilll三十年
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
按照你的方法写发现不行 还是提示加载那DLL错误 工具查看导出函数的确就一个不知道是没写好还是什么 ~
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
膜拜 !!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
只能对QQGAME
|
|
|