首页
社区
课程
招聘
[原创]献给新手(三)--Windows还有更低阶的API--(SoftICE怀旧之旅)
发表于: 2011-1-7 05:17 38979

[原创]献给新手(三)--Windows还有更低阶的API--(SoftICE怀旧之旅)

2011-1-7 05:17
38979

【原创】献给新手(三)--Windows还有更低阶的API--(SoftICE怀旧之旅)



    前面兩帖所介绍的全部都是属于User端(Ring 3)层级的API,但是如果您对付的是恶意程式


(病毒、木马及后门程式等…)那么这些骇客级的玩家就不会用这么高阶的API了,


他们会去用非常低阶非常冷门的API,

也就是Ring 0层级的API

,对于没写过程序的读者,根本不会听过这些API的名字,而对于只是用VC、BCB或是VB、Delphi写应用程序的


读者也不会用到这样的API,只有写低阶核心程序或是驱动程序的读者才会‘稍微’去涉猎这些API,为什么说是稍微呢?因为这些底层的API实在太多了,而且是层层呼叫的,


举例来说吧!我们之前用Ring 3层级的RegOpenKeyA这个API可以开启Windows的註冊档(Registry),但是有心的读者可以在SoftICE中继续往下Trace看看,就会发现它会去呼叫


NtOpenKey最后实际去执行的则是ZwOpenKey这个API,如果您只知道RegOpenKeyA这个API那么您永远也拦不到用ZwOpenKey写的恶意程序。



此外,有些软件狗(KeyPro)例如早期的彩虹狗(Rainbow Sentinel SuperPro)--后来公司被并购现在叫赛孚耐(SafeNet)狗,也是用低阶核心驱动来做保护的,了解驱动可以帮我们


对付更多的保护手法喔



各位读者您可以在SoftICE中输入NTCALL指令,您就会看到一堆Nt开头的API名称,当然还有其他字样的低阶API名称,这下总算见识到了,为什么别人能成为黑客而我们不能,


或是别人能解开的软件而我们不能,秘密就在这里…





但是因为NtOpenKey是未公开的API所以并没有导出,因此您可能看了半天却找不到NtOpenKey这个API,各位可以上网找一下冰刃(IceSword)这个软体



安装后按左边长条状的功能键再按SSDT就可以看到完整导出的低阶API名称





在右边名称栏位最下方就可以看到NtOpenKey这个API的名称。


但是还是看不到ZwOpenKey这个API名称,而且也无从得知NtOpenKey的用法,


这时您需要安装微软的

Windows Driver Kit(WDK)






在这个网页中点选中间的 “Microsoft Download Center” 就会进入真正的下载页面:





下载后可以执行KitSetup.exe进行安装,


安装时千万注意不要选Device Simulation Framework(DSF)选项,否则安装完成后Windows将会无法重启,


系统会出现system32\drivers\dsfksvcs.sys损坏的错误讯息!!



重开机成功之后,您可以在Windows Driver Kits-->Help-->WDK Documentation中找到所有有关低阶API的使用讯息,





例如我们打入NtOpenKey就会告诉我门微软不主张我们在写程式时叫用这个API





那我改键入ZwOpenKey





这时就会有完整的呼叫方式和回传的介绍出现了。



现在我们来实作看看,在我上传的附件

Ring0 API Test.rar


裡面有一个KmdManager.exe(Kernel-Mode Driver Manager)执行这个程序按右上方的


 “…” 按键载入zwdemo first.sys





这就是低阶核心程序以.sys的型态出现,各位可以叫出OllyDBG试试看无论您用开启档案或是附加档案的方式都不支援这种类型的,但我们用SoftICE却很容易来分析和破解它!



KmdManager是一个可以模拟低阶核心程式执行的小程式,因为一般这种类型的程式都是被放入Windows Registry区中的


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 以及


HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services


HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services


… … …


这几个机码之中,在Windows启动的时候就会被执行,不是只有之前介紹的


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run而已




这个是CurrentControlSet中会在开机时被执行的sys




这个是ControlSet002中的sys



而平常的时候是不会主动被执行的,这就是这种类型程序的可怕之处,一般程度的人很难发现它的存在,也很难去分析它到底做了什么事?


所以是最常被骇客们拿来写恶意程式的管道!而有了KmdManager.exe就可以把.sys程式当成.exe程式来执行和分析。



我们把Windows中的RegEdit.exe(登录编辑程式)打开并且让它显示


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run


这个机码区域,这个区域里的所有程式也是Windows启动时会全部被载入执行程式!!所以也是兵家必争之地,这个地方被植入程式的名称也就保证


以后这个作业统每次重新启动时都一定会被执行。



我们先按一下KmdManager.exe中的Register按键,再按Run按键,经过上述的动作之后,就等于zwdemo first.sys这个低阶核心程式在开机时被完整执行了,


现在我们到下方的注册表编辑器,我们按一下 检视-->重新整理 键或是直接按下F5键,这时您会看到在Run的机码区中多了一行名称为Test资料为C:\A.txt的机码在上面,



[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (37)
雪    币: 286
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
继续学习,下载收藏!!
2011-1-7 08:15
0
雪    币: 1849
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
努力学习。确实,没有基本的调试能力,脱起壳来死板的很,不够灵活
2011-1-7 08:33
0
雪    币: 955
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没找到收藏 只好留名  哈哈   现在还没学到那么深
2011-1-7 09:08
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
6
lz辛苦了,这样的文章会让初学者少走一些弯路
2011-1-7 10:54
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
7
主体工具-->收藏主题
2011-1-7 10:55
0
雪    币: 615
活跃值: (1327)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
嘻嘻 会看到 程式... 软体.... 磁碟.....等词汇
楼主 用心良苦了
2011-1-7 11:06
0
雪    币: 149
活跃值: (101)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
不好意思,是我没有注意,ConvertZ这个软件,只会帮我把繁中转成简中,但不会
帮我改成-->程序,软件...等用语,有哪位雪友帮我给个对照表,我会努力改进的

也谢谢你们不嫌弃我是从台湾来的,老实说,在台湾这边,我讲的这些东西根本没人会重视,
学校不会教,公家也不重视,投稿到杂志社也不愿帮我刋登...

还是这里好,版主会重视我的文章,常常鼓励我,雪友们即使不赞成我的论点,也不会恶言攻击,
我的成长,看雪学院帮我好多,现在只是真心想回馈,写的不好,对简中的用语也不熟,还请大家
多多原谅啊
2011-1-7 13:19
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
什么“嫌弃”,我赶紧先收藏了!
开启档案或是附加档案的方式 这是什么意思?附加调试?
2011-1-7 13:29
0
雪    币: 695
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
sys 没有壳 可以加cv
2011-1-7 14:07
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
VMP CV SL 都能给SYS加壳。
2011-1-7 15:54
0
雪    币: 615
活跃值: (1327)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
误会 pediy是一个很好的交流平台.
2011-1-7 16:21
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
好怀恋SoftICE啊,可惜啊,停止开发了。
2011-1-7 16:28
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
菜鸟继续来顶贴
2011-1-7 16:32
0
雪    币: 198
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16

台湾气氛还不错吧,以前看的时候还有台湾大侠的“78”大法。哈哈
2011-1-7 17:13
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
感谢楼主的文章(收获不少),希望还有第四部。
2011-1-7 17:44
0
雪    币: 149
活跃值: (101)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
18
台湾这边法令管太严,很多事都不能做,学校和公家都不太重视这一块,以前的一些
高手,为了生计应该都不碰这个了啊
2011-1-7 19:45
0
雪    币: 149
活跃值: (101)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
19
对EXE档的加壳,是可以把 "整个" EXE档重新包装,改变了PE档头,
因此對使用OD的入門者,如果沒有脫殼工具或腳本,就必需從頭一行一行追起...
但对SYS档,只能利用标记在源码上做段落记号,VMP再对那个 "部份" 做打乱的动作,
不是把整个SYS加壳!!

这个对IDA Pro的静分析比较能防,对SoftICE来说,尤其是我现在发上来的例子,
除非你整个写入登录档的过程都不用任何API,否则你用VMP在所谓"关键段落"
打得再乱再多虚拟码也没有用,最后你一定要解码为正确的x86机码并且和Windows
底层API打交道,这时难逃SoftICE的监督,在写入机码的相关位置,一定会被拦下做分析的
2011-1-7 19:59
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
20
顶了,期待楼主下一篇
2011-1-7 22:56
0
雪    币: 258
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
学习了,谢谢分享!
2011-1-8 11:47
0
雪    币: 291
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
黑白的图片看着好别扭~
2011-1-8 16:09
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
23
支持直接用你熟悉的繁体及语言格式。我们大部人都能看懂的。
听说台湾那边不太敢做破解相关的东西,因为地方小,抓人容易.
2011-1-8 18:10
0
雪    币: 149
活跃值: (101)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
24
从台湾连过来最近都比较慢,上传图片一次又只能四张,所以搞成黑白的,
压缩图档Size,看传上来会不会快一点,不好意思啦
2011-1-8 18:14
0
雪    币: 149
活跃值: (101)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
25
哇!高级会员咧!!赶快膜拜一下,好遥远的目标啊
谢谢你支持我,真的很感动,像您这样大牛级的会员,还会来看我们新手写的帖,
还会体谅我的简中用的不好,真的是很难得的,
不过入境应该要随俗,我还是会努力学好简中的啦

我们这边因为美国压着台湾一定要通过他们心目中的 "著作权法",
所以很多事都不能做,也导致我们这边反组译的人才愈来愈少,水平也无法快速提升!!
还是您们比较好,管得比较少,真是羡慕啊
2011-1-8 18:30
0
游客
登录 | 注册 方可回帖
返回