首页
社区
课程
招聘
[原创]揭秘TX游戏的登陆
发表于: 2015-6-22 15:11 15951

[原创]揭秘TX游戏的登陆

2015-6-22 15:11
15951
申明,此文仅此研究学习,私自用于任何商业活动造成的后果,一律无本人无关。

另外:本人想在成都地区找份工作,工作经验也有2-3年了吧,在安全公司做过木马,自己和朋友做过外挂,C++及windows方向的编程都还可以,逆向也懂一点。联系方式: QQ 1536854253 Tel:15659776712

源代码在附件里面
由于看雪,不方便发图片,所以我直接用文字描述了。

废话完毕,正式开说:

今天拿JFZR这个游戏来作为主题游戏。。

1、首先 我们启动游戏的登陆器Client.exe。然后发现进程列表多了3个进程,
TASlogin.exe,
TenioDl.exe,
TenSafe_1.exe
2、然后从任务管理器转到进程发现界面是用Client.exe这个程序提供的。。首先我们用spy++监视这个主窗口的键盘消息,,但是并没有任何发现,所以我大胆猜测,输入用户名和密码不是在这个进程实现的,,

3、打开XT。扫描“应用层勾子->消息勾子->仅显示全局勾子”
发现:
类型                    函数               模块        进程路径
WH_KEYBOARD_LL      0x5F5DA645       fszwd.dat      D:\疾风之刃\TCLS\TenProtect\TASLogin.exe

由此得知,是由这个进程在输入用户名和密码,,当然后面的分析和测试就不继续说了

4、监视用户名和密码 Edit控件
发现:
用户名控件 是明文
密码控件   是密文

5、OD附加TASlogin.exe。找到勾子函数,发现是各种JMP。能JMP到你头晕。F2下断,就被检测, 对此毫无头绪。。难道就要就此放弃嘛,   为此我还休息过几天,表示没任何办法。。然后过了几天,我突然灵光一现,,他的勾子函数我们不是可以直接利用嘛。

6、利用方法:
  对TASLogin.exe注入DLL->然后在DLL中安装勾子->获取用户和密码控件句柄->伪造勾子参数->设置输入焦点->调用勾子函数(伪造的参数)
void InputPwd(TCHAR tch)
{
	bool bShift =false;
	if( 0x41 <= tch  && tch<= 0x5A)  //大写字母
		bShift=true;
	else if( 0x61<=tch && tch<=0x7A) //小写字母
		tch -= 0x20;

	LowLevelKeyboardProc Proc=(LowLevelKeyboardProc)g_dwCallbackAddr;
	if( bShift )
	{
		pKdb.vkCode = VK_SHIFT;
		Proc(nCode,wParamDown,(LPARAM)&pKdb);
	}
	pKdb.vkCode = tch;
	Proc(nCode,wParamDown,(LPARAM)&pKdb);
	Proc(nCode,wParamUp,(LPARAM)&pKdb);

	if( bShift )
	{
		pKdb.vkCode = VK_SHIFT;
		Proc(nCode,wParamUp,(LPARAM)&pKdb);
	}
}


7、后绪的选区分析就不提供了、如果需要我可以联系我本人
好吧,没人看。那我就贴出 登陆结果 部分吧

8、登陆以后,获取登陆结果。。
//获取登陆状态
0476DAF0    55              push ebp                                 ; [esp+4]== 1A9 登陆成功, [esp+4]==0x1AA 登陆失败
0476DAF1    8BEC            mov ebp,esp
0476DAF3    6A FF           push -0x1
0476DAF5    68 894A8F04     push TCLS.048F4A89
0476DAFA    64:A1 00000000  mov eax,dword ptr fs:[0]
0476DB00    50              push eax
0476DB01    64:8925 0000000>mov dword ptr fs:[0],esp
0476DB08    83EC 68         sub esp,0x68
0476DB0B    53              push ebx
0476DB0C    56              push esi
0476DB0D    57              push edi
0476DB0E    8D4D E8         lea ecx,dword ptr ss:[ebp-0x18]
0476DB11    E8 EA7AFBFF     call TCLS.04725600
0476DB16    C745 FC 0000000>mov dword ptr ss:[ebp-0x4],0x0
0476DB1D    66:C745 D0 0000 mov word ptr ss:[ebp-0x30],0x0
0476DB23    33C0            xor eax,eax
0476DB25    8945 D2         mov dword ptr ss:[ebp-0x2E],eax
0476DB28    8945 D6         mov dword ptr ss:[ebp-0x2A],eax
0476DB2B    8945 DA         mov dword ptr ss:[ebp-0x26],eax
0476DB2E    8945 DE         mov dword ptr ss:[ebp-0x22],eax
0476DB31    8945 E2         mov dword ptr ss:[ebp-0x1E],eax
0476DB34    66:8945 E6      mov word ptr ss:[ebp-0x1A],ax
0476DB38    6A 0A           push 0xA
0476DB3A    8D4D D0         lea ecx,dword ptr ss:[ebp-0x30]
0476DB3D    51              push ecx
0476DB3E    8B55 08         mov edx,dword ptr ss:[ebp+0x8]
0476DB41    52              push edx
0476DB42    FF15 181DA704   call dword ptr ds:[<&MSVCRT._itow>]      ; msvcrt._itow
0476DB48    83C4 0C         add esp,0xC
0476DB4B    68 08020000     push 0x208
0476DB50    68 98A3A604     push TCLS.04A6A398                       ; UNICODE ";签名成功"
0476DB55    68 086AA104     push TCLS.04A16A08                       ; UNICODE "text"
0476DB5A    8D45 D0         lea eax,dword ptr ss:[ebp-0x30]
0476DB5D    50              push eax
0476DB5E    68 DC69A104     push TCLS.04A169DC                       ; UNICODE "config\prompt.ini"
0476DB63    8D4D EC         lea ecx,dword ptr ss:[ebp-0x14]
0476DB66    E8 7680FBFF     call TCLS.04725BE1
0476DB6B    68 98A3A604     push TCLS.04A6A398                       ; UNICODE ";签名成功"
0476DB70    FF15 B01CA704   call dword ptr ds:[<&MSVCRT.wcslen>]     ; msvcrt.wcslen
0476DB76    83C4 04         add esp,0x4
0476DB79    85C0            test eax,eax
0476DB7B    75 20           jnz short TCLS.0476DB9D
0476DB7D    8B4D 08         mov ecx,dword ptr ss:[ebp+0x8]
0476DB80    51              push ecx
0476DB81    68 C069A104     push TCLS.04A169C0                       ; UNICODE "统一登录系统错误:%d"
0476DB86    68 07020000     push 0x207
0476DB8B    68 08020000     push 0x208
0476DB90    68 98A3A604     push TCLS.04A6A398                       ; UNICODE ";签名成功"
0476DB95    E8 1391FBFF     call TCLS.04726CAD
0476DB9A    83C4 14         add esp,0x14
0476DB9D    C745 CC 98A3A60>mov dword ptr ss:[ebp-0x34],TCLS.04A6A39>; UNICODE ";签名成功"
0476DBA4    C745 FC FFFFFFF>mov dword ptr ss:[ebp-0x4],-0x1


9、找到登陆失败原因

//获取登陆失败的原因
047E8500    55              push ebp                                 ; 登陆出错后到这,[esp+c]是字符串指针
047E8501    8BEC            mov ebp,esp
047E8503    81EC 60020000   sub esp,0x260
047E8509    53              push ebx
047E850A    56              push esi
047E850B    57              push edi
047E850C    894D FC         mov dword ptr ss:[ebp-0x4],ecx
047E850F    C745 F4 0000000>mov dword ptr ss:[ebp-0xC],0x0
047E8516    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
047E8519    8378 18 00      cmp dword ptr ds:[eax+0x18],0x0
047E851D    74 2B           je short TCLS.047E854A
047E851F    8B4D FC         mov ecx,dword ptr ss:[ebp-0x4]
047E8522    83B9 50110000 0>cmp dword ptr ds:[ecx+0x1150],0x0
047E8529    74 1F           je short TCLS.047E854A
047E852B    8B55 FC         mov edx,dword ptr ss:[ebp-0x4]
047E852E    81C2 38020000   add edx,0x238
047E8534    52              push edx
047E8535    8B45 08         mov eax,dword ptr ss:[ebp+0x8]
047E8538    50              push eax
047E8539    8B4D FC         mov ecx,dword ptr ss:[ebp-0x4]
047E853C    8B49 18         mov ecx,dword ptr ds:[ecx+0x18]
047E853F    8B55 FC         mov edx,dword ptr ss:[ebp-0x4]

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (29)
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
挺厉害的!
2015-6-22 15:35
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
消息钩子拦截
2015-6-22 15:35
0
雪    币: 1515
活跃值: (6002)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
没听懂。楼主语文老师不行
2015-6-22 15:40
0
雪    币: 145
活跃值: (752)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
对不起,此文不面向小学生。
2015-6-22 15:42
0
雪    币: 81
活跃值: (115)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
简单来说就是你找到了一个登陆用的控件层内存call,然后远程调用了
2015-6-22 15:51
0
雪    币: 145
活跃值: (752)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
不是哦。就是调用勾子的回调函数而已。
2015-6-22 15:53
0
雪    币: 9941
活跃值: (2273)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
函数不要返回临时变量啊 , 虽然现在运行着没什么问题
总有一天,你会看到他给你带来的灾难的
2015-6-22 20:29
0
雪    币: 145
活跃值: (752)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
哪个地方函数返回临时变量了?
2015-6-22 20:37
0
雪    币: 105
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我竟然。。。。
2015-6-22 21:30
0
雪    币: 145
活跃值: (752)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
湿了吗?
2015-6-22 21:36
0
雪    币: 41
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
从来还没研究过密码呢 这下去研究下
2015-6-22 22:06
0
雪    币: 145
活跃值: (752)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
13
你那个x64过TP驱动搞得怎么样了。 加我QQ。交流一下?
2015-6-22 22:13
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
哦,这是干吗用的,盗号吗
2015-6-22 23:06
0
雪    币: 41
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我QQ 1037,593,959 答案 7
2015-6-22 23:38
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
16

看不懂
2015-6-23 00:26
0
雪    币: 1040
活跃值: (1698)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
居然没有人注意到最关键的话?“在安全公司做过木马”水很深啊~O(∩_∩)O
2015-6-23 02:02
0
雪    币: 1
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
同在成都,同在安全公司呆过的顶下
2015-6-23 10:32
0
雪    币: 145
活跃值: (752)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
19
额。写得是比较简单。没有写那么清楚。就像我看你那个过TP的。我也没看懂。哈哈。
2015-6-23 10:54
0
雪    币: 138
活跃值: (648)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
马克下~~
2015-6-24 04:05
0
雪    币: 6129
活跃值: (4971)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
21
楼主的叙述实有点坑。。大概看懂了
2015-6-24 13:44
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
明显的坐进观天,笑文一篇
2015-6-24 23:09
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
大概思路懂了,挂钩登陆进程回调函数 截取键盘消息吧。
感觉,意义不大啊。 过去了还有二级密码呢。
2015-6-25 10:59
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
以为是TX的登录协议呢
2015-6-25 11:05
0
雪    币: 53
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
泡论坛最大的乐趣是什么?不是看楼主的帖子,是看回复,说什么的都有,呵呵
2015-6-27 15:10
0
游客
登录 | 注册 方可回帖
返回