首页
社区
课程
招聘
[原创]WoW's一点小诡计简单分析
发表于: 2007-6-7 15:42 50899

[原创]WoW's一点小诡计简单分析

2007-6-7 15:42
50899
收藏
免费 9
支持
分享
最新回复 (86)
雪    币: 214
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
26
有意思,我都是hook读写内存,没OpenProcess
2007-6-8 12:54
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
强人啊强人 学习
2007-6-8 13:06
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
28
消息钩子?注入?
其实我也想过,但是毕竟要多一个DLL而且还要释放 体积也要增大。而且有一个局限 就是无法应用在没有窗体的程序上,当然 网友都有窗体。
2007-6-8 13:12
0
雪    币: 156
活跃值: (374)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
29
5楼似乎wower哦
2007-6-8 16:19
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
见过强的,没见过这么强的
2007-6-8 20:30
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
31
我逆向过war3,记得也是这么保护的,但照样有作弊器,突破点应该不难,提升一下SeDebugPrivilege权限应该就可以了

找到shoooo的loader代码试试
void AdjustPrivilege(int pid, BOOL bEnable)
{
    HANDLE    hProcess;
  HANDLE    hToken=0;
    TOKEN_PRIVILEGES tkp;
  tkp.PrivilegeCount = 1;  
  tkp.Privileges[0].Attributes = 0;
  if (bEnable)
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  if (LookupPrivilegeValue(NULL, "SeDebugPrivilege", &tkp.Privileges[0].Luid))
  {
    if (hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid))
    {
      if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken))
      {
        if (AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL))
        {
          CloseHandle(hToken);
        }
      }
      CloseHandle(hProcess);
    }
  }
}


当然,要管理员权限才能执行这段代码
2007-6-8 20:39
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
32
WOW这段保护代码本身不需要管理员权限,不过可能在WIndows XP 可以用这个方法提权实现,
反正我在Vista上面提权了还是失败。。所以我就索性不去提了 。。才有逆向这段代码的由来。
2007-6-8 20:45
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
33
WOW这段保护代码本身不需要管理员权限。不过可能在WIndows XP 可以用这个方法提权实现,
反正我在Vista上面提权了还是失败。。所以我就索性不去提了 。。才有逆向这段代码的由来。
2007-6-8 20:45
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
34
vista下,我没研究过,XP下应该可以

这个东西当时由于时间关系我没有过多去查资料,保护时候不需要管理员权限的,这个代码的意思就是加入一个系统级的访问限制(名字可能说得不对),让所有进程没有打开它的权限(OpenProcess),所以会打开失败。但系统的SeDebugPrivilege权限非常大,能突破这个限制,所以,在OpenProcess之前要先提升权限,至于我说的要在管理员权限下,是因为,提升SeDebugPrivilege权限需要管理员权限,是这样的。

如果你有兴趣可以上网搜索 ma phack ,然后逆向一下就知道了  ,具体就不多说了

BTW:这个还是很不错的一个保护方法
2007-6-8 20:52
0
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
35
学习啊....
2007-6-8 20:53
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
36
太强了,学习!!!
2007-6-8 20:53
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
37
vista把UAC关了试试?
2007-6-8 21:34
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
error C2065: 'PROTECTED_DACL_SECURITY_INFORMATION' : undeclared identifier

VC6不能编译?
2007-6-8 22:32
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
39
让我失望了一把
2007-6-8 22:38
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
40
要嘛去下载最新的SDK
要嘛去安装VS2005。
如果不是因为这个原因 我相信魔兽也就会用VC6
所以微软的这一招是很明智的。
2007-6-8 22:47
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
41
VC6缺一个define,自己补上就可以了

#define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L)

在vs2005的msdn中找到的。。
2007-6-8 22:55
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
42
xp下测试通过了

vista下测试

Lock_Proc1.exe代码
{
//AdjustPrivilege(GetCurrentProcessId(), TRUE);
TestFunc();
getchar();
return 0;
}


Lock_Proc2.exe代码
{
AdjustPrivilege(GetCurrentProcessId(), TRUE);
TestFunc();
getchar();
return 0;
}


vista下截图如下:

第一个图是没开UAC的,直接运行:


第二个是开UAC的,一个是普通双击执行,一个是点右键,以管理员身份运行:
上传的附件:
2007-6-8 22:58
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
嗯,我自己不上了。
2007-6-8 22:58
0
雪    币: 191
活跃值: (41)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
44
有了 debug 权限应该所有进程都能打开,除非一些被 hook 保护的,或者 Vista 系统上的受保护进程。
2007-6-8 23:09
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
虽然有效果,但是任务栏可以看到用户名,并没有跟楼主一样不显示进程用户名。
2007-6-8 23:47
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
WINHEX效果不大
2007-6-8 23:49
0
雪    币: 236
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
收藏学习~~
2007-6-8 23:58
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
注入也没问题。看样子作用不大。
2007-6-9 00:22
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
49
确实作用不大
只要你的代码有SetPrivilege() 这段代码对你就啥作用也没了

这也就是winhex能够打开他并且修改内存的原因了。。HOHO
再说一般注入也会写SetPrivilege() 函数的 所以几乎没有感觉出差别也是正常的
2007-6-9 13:03
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
50
非也,不是所有情况下你都可以获得管理员权限,比如在网吧或者是Vista默认就是没有管理员权限
对一个暴雪 我相信搞点驱动来访你 是很容易的,关键是人家考虑兼容性,不过不管怎么说这也是一个方法,至少可以过任务管理器。对于一般的应用还是足够了。
2007-6-9 13:09
0
游客
登录 | 注册 方可回帖
返回
//