首页
社区
课程
招聘
[讨论]不内嵌汇编的调用ZwAPI(指正错误系列文章补充)
发表于: 2014-5-17 14:39 8599

[讨论]不内嵌汇编的调用ZwAPI(指正错误系列文章补充)

2014-5-17 14:39
8599
前段时间曾经发过一个“【讨论】指正老文章错误系列:APC注入DLL非要用汇编的谬论”,结果被鄙视了。

这次我用代码说话,XP/WIN7测试没问题(32位系统),其它系统没有测试。代码原型是Q友给我的,我做了一点改动。

#include <ntddk.h>
#include <windef.h>
#include <stdlib.h>

PVOID BuildZwRoutine(ULONG id, USHORT ParamCount)
{
  /*
  80500f20 b8XX000000      mov     eax,ID
  80500f25 8d542404        lea     edx,[esp+4]
  80500f29 9c              pushfd
  80500f2a 6a08            push    8
  80500f2c e8XXXXXXXX      call    nt!KiSystemService (YYYYYYYY)
  80500f31 c2XX00          ret     4*ParamCount
  */
  UNICODE_STRING UniCodeFunctionName;
  ULONG pfnKiSystemService=0,pfnZwTerminateProcess=0,temp;
  PUCHAR callfunc=ExAllocatePool(NonPagedPool,20);
  UCHAR shellcode[21]="\xb8\xFF\xFF\xFF\xFF\x8d\x54\x24\x04\x9c\x6a\x08\xe8\xFF\xFF\xFF\xFF\xc2\xFF\xFF";
  ParamCount=ParamCount*4;
  //获得KiSystemService的地址
  RtlInitUnicodeString(&UniCodeFunctionName, L"ZwTerminateProcess");//随便一个导出的zw函数
  pfnZwTerminateProcess=(ULONG)MmGetSystemRoutineAddress(&UniCodeFunctionName);
  memcpy(&temp,(PVOID)(pfnZwTerminateProcess+13),4);
  pfnKiSystemService=temp+5+(pfnZwTerminateProcess+12);
  //组建shellcode
  temp=pfnKiSystemService-((ULONG)callfunc+12)-5;
  memcpy(callfunc,shellcode,20);
  memcpy(callfunc+1,&id,4);
  memcpy(callfunc+13,&temp,4);
  memcpy(callfunc+18,&ParamCount,2);
  return callfunc;
}

typedef NTSTATUS (__stdcall *ZWOPENPROCESS)
(
    PHANDLE ProcessHandle,
    ACCESS_MASK DesiredAccess,
    POBJECT_ATTRIBUTES ObjectAttributes,
    PCLIENT_ID ClientId
);

void TestCallMyZwOpenProcess()
{
  ZWOPENPROCESS pfn;
  NTSTATUS st;
  HANDLE hProc;
  CLIENT_ID cid= {0};
  OBJECT_ATTRIBUTES attr= {0};
  pfn=(ZWOPENPROCESS)BuildZwRoutine(0x7A,4);
  DbgPrint("MyZwOpenProcess: %p\n",pfn);
  cid.UniqueProcess = (HANDLE)4;
  attr.Length = sizeof(OBJECT_ATTRIBUTES);
  st=pfn(&hProc, 1, &attr, &cid);
  DbgPrint("Status: %x, Handle: %p\n",st,hProc);
}


最后吐槽一下,我为何比较讨厌CVCVXK。他的私德问题(比如炫耀式发帖、抄代码不写明出处、用水军打击他人等)我不想提及,只说一下他公德问题。

不可否认,CVCVXK的技术确实不错。但是,他用他那不错的技术干了什么呢?不是为人民服务,而是做协助违法犯罪的事情,以“测试游戏保护”为借口,出售所谓的“反游戏保护”软件,辅助外挂编写,让游戏服务提供商蒙受重大损失。制作外挂,是明显的违法行为,即使所谓的“反游戏保护”软件不违法,请问CVCVXK你心安理得吗?把自己的成就,建立在别人的痛苦之上,这就让你拥有所谓的成就感吗?窃以为,计算机的出现,是为了推动人类社会的发展,而不是用于内耗,让少数的耗子赚钱的。如果CVCVXK愿意利用自己的技术,响应国家的号召(比如开发国产的操作系统),是一件多么好的事情。

我知道,这段话说出去,肯定会得罪很多人,可能我会遭受各种人身攻击,甚至人身安全都成问题。CVCVXK是黑客,通过IP地址找到我的地址甚至真实姓名、照片都是轻而易举的事情,但我实在是不吐不快!

PS:我在现实中不认识CVCVXK,也没有私仇。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (30)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
“比如开发国产的操作系统”   尼玛。 其他话我没意见,这句话实在是太蛋疼了。 感觉生活的不是一个世界。
2014-5-17 14:48
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主你说这话就不对了,你不知道老V的脸皮厚度能跟城墙相比吗?只要能赚钱,被人说两句算什么,估计老V不会鸟你写的这个长篇大论。
2014-5-17 15:04
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
这就说的很对了,我们没私仇,另外我对人肉发掘别人的信息没啥意义,什么物理pk更加没啥意义。

话说,反游戏保护是因为游戏保护做了太多不该做的事情,
比如胡乱挂钩(和安全软件冲突,和开发工具冲突),
随意上传数据(我无法理解为毛一个游戏保护也要上传,而且连个提示都没有),
造成各类兼容性问题等等,
另外就是通过反游戏保护,
来促进游戏保护发展,
让那些不思进取只知道一味乱挂钩的保护从舞台上走下去,
让安全性更高,更稳定的游戏保护走上台来。

这就跟漏洞挖掘,漏洞利用,漏洞修补,安全性更新这些东西之间的关系一样。

PS:照你这么说,研究火箭制造的人,造菜刀的人都是道德有问题的人了~
水军不是我的,我也没利用水军,发帖的目的仅仅是分享一些无聊时做的研究而已。

话说,内嵌shellcode确实高大上,下次也改用这个方式,但是内嵌shellcode和内嵌汇编差别性不大。
2014-5-17 15:18
0
雪    币: 7900
活跃值: (2295)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没有老V这类人,游戏安全工作者该失业了!
2014-5-17 15:19
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
6
唉,赚钱是必然,但是我赚钱的方式跟IT业都没关系,这里人都以为我靠IT行业赚钱。
2014-5-17 15:26
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
开发国产的操作系统 这个真心逗乐

话说 内嵌汇编跟内嵌ShellCode有区别吗?只不过看上去很美罢了。
内嵌汇编实际最终也是被编译成机器码,ShellCode=机器码 换汤不换药罢了。
2014-5-17 15:44
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
8
我曾经有过这种想法,
但是后来被大环境残酷的现状扼杀,
我去跟风投谈操作系统开发,人家直接跟我说有机会再合作。
我跟他们谈编译器,国产开发语言,人家还是让我先回去想想。
2014-5-17 15:47
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
风投都是要看短期收益的吧,况且老板也不懂
俺朋友曾经给风投干过,下来聊天,他感觉老板啥都不懂,只要你会忽悠,再有点技术,钱就来了。
2014-5-17 15:51
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
10
是啊,现在你要谈手游和页游,小众电商什么的,谈每月流水收益,人家才会理你。

另外操作系统这玩意,开发一搞就是3-5年,几十个人一起战斗。唉~

要么你有用户量,然后跟风投谈。
2014-5-17 15:54
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
11
楼主,你给的代码又不完整,小白又要杯具,内存不释放
2014-5-17 16:48
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
技术论坛整天喷来喷去,闲的蛋疼,有这闲心喷人,自己多为国家做点贡献呗,不要只是嘴上说说... 光说不练
2014-5-17 17:00
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
就该这样

能看到问题,就不算小白了
2014-5-17 17:01
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
就调用一个zw系列函数而已,用得着这么大动干戈?你不清楚所有nt系列的zw函数,都是按照函数在ssdt里的索引号在内存挨个排列,而且所有zw函数字节数都完全一致么?
2014-5-17 17:04
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
15
你不知道剧情啊,前面他们“讨论”过发代码不要带bug,或有bug也要指出。
不过这个相信是楼主忘了
2014-5-17 17:05
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
16
其实有了10年之后,我发代码的时候,直接POC一下思路和实现就行了,根本不用管其他的了~
2014-5-17 17:42
0
雪    币: 246
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
大度!可敬。
2014-5-17 20:08
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
比如开发国产的操作系统  = =咱生活的是同一个地球么?
2014-5-18 09:18
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
感谢楼主放码。但别的啥也不说了,挺老V!这事儿至于吗,技术切磋才有进步,都捂着还进步个P。
2014-5-18 10:33
0
雪    币: 158
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
比如开发国产的操作系统  = =咱生活的是同一个地球么?
2014-5-18 10:41
0
雪    币: 44
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不懂,也不会装懂,路过的
2014-5-18 10:52
0
雪    币: 7394
活跃值: (4101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
不发表意见,蛋疼路过而已
2014-5-18 10:54
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
话说游戏保护目前没啥难度,能剥离已经被剥离了全球版,能多开都多开了,能算号都算号,能脱都脱了。还有什么?除了国内的X系列保护。
2014-5-18 19:13
0
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
就算再完美的东东,被一个看你不顺眼的人看到,都会被XXXX~~~
2014-5-18 20:10
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
25
确实是这样,这个世界太大也太小~
2014-5-18 20:16
0
游客
登录 | 注册 方可回帖
返回
//