首页
社区
课程
招聘
[原创]通过逆向分析取得的瑞星卡卡驱动程序RsBoot.sys源代码
发表于: 2006-11-23 21:18 16097

[原创]通过逆向分析取得的瑞星卡卡驱动程序RsBoot.sys源代码

2006-11-23 21:18
16097

看到有人研究,顺手写了一下。只可用于学习研究之用途。本人对他人使用本文件中的代码所引起的后果概不负责。

编译通过,是否可用不知道,等人测试

更新:
2006-11-24 更新wowocock老大帮忙找到的一个bug

附件中是源码、编译的文件、IDA5.0的IDB


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (31)
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
忘记说了,是2006年11月22日的3.0.0.7的
2006-11-23 21:22
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
3
写错个地方,改了一下……
2006-11-23 21:28
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
4
牛人,收藏了,
2006-11-23 22:26
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
强,支持。
2006-11-23 22:39
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
牛头人,不收藏。
2006-11-23 23:03
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
7
sti漏不漏是无所谓的。。。
2006-11-23 23:59
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
8
最初由 xIkUg 发布
sti漏不漏是无所谓的。。。


确实这样。
2006-11-24 00:11
0
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
支持~
建立映像加载回调然后进行特征码分析,似乎是很旧的手段了
不过这个patch入口点的terminate方式还挺有意思的
2006-11-24 01:11
0
雪    币: 615
活跃值: (1267)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
收藏了! 牛!
2006-11-24 08:43
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
11
从源代码学习到了一些东西。。。感谢。。。
2006-11-24 11:47
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
12
wowocock帮忙找到个bug,更新了
2006-11-24 12:33
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
强人~~~~~~~~~~~~~~~
2006-11-24 12:51
0
雪    币: 281
活跃值: (3050)
能力值: ( LV12,RANK:610 )
在线值:
发帖
回帖
粉丝
14
我的vc6下为啥编译不了呢?
需要先运行什么?
还是需要先安装什么?
弱问!

--------------------Configuration: RsBoot - Win32 Free--------------------
C:\Documents and Settings\ylp\桌面\rsboot\precomp.h(8): Could not find the file ntddk.h.
Compiling...
RsBoot.c
C:\Documents and Settings\ylp\桌面\rsboot\RsBoot.c(0) : fatal error C1083: Cannot open include file: 'warning.h': No such file or directory
Error executing cl.exe.

RsBoot.sys - 1 error(s), 0 warning(s)
The following environment variables were not found
$(TARGET_LIB_PATH)
$(CRT_INC_PATH)
$(TARGET_INC_PATH)
$(WDM_INC_PATH)
$(DDK_INC_PATH)
$(WINVER)
$(NTDDI_VERSION)
$(_WIN32_IE)
$(_WIN32_WINNT)
2006-11-24 16:53
0
雪    币: 201
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这个强!拉回去研究
2006-11-24 18:00
0
雪    币: 191
活跃值: (41)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
16
强,支持!逆向是合法的吗?
2006-11-24 19:56
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
17
最初由 ylp1332 发布
我的vc6下为啥编译不了呢?
需要先运行什么?
还是需要先安装什么?
弱问!

........


需要DDK的编译环境才能编译。

最初由 小喂 发布
强,支持!逆向是合法的吗?


只要不作为商业用途应该问题不大。我们只是学习、研究罢了
2006-11-24 20:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
下个研究!谢谢!
2006-11-25 17:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
我想问几个粗浅的问题。就拿一小段来说:
下面是我对源文件用idapro 5.0反向的结果:
.text:00010480 ; int __stdcall sub_10480(SIZE_T NumberOfBytes)
.text:00010480 sub_10480       proc near               ; CODE XREF: sub_10494+70p
.text:00010480
.text:00010480 NumberOfBytes   = dword ptr  4
.text:00010480
.text:00010480                 push    206B6444h       ; Tag
.text:00010485                 push    [esp+4+NumberOfBytes] ; NumberOfBytes
.text:00010489                 push    0               ; PoolType
.text:0001048B                 call    ds:ExAllocatePoolWithTag
.text:00010491                 retn    4
.text:00010491 sub_10480       endp

而楼主给出的是这样的:
.text:000102C0   ; int __cdecl NEW(SIZE_T NumberOfBytes)
.text:000102C0     _NEW            proc near               ; CODE XREF: RBDelRegTree+72p
.text:000102C0
.text:000102C0      NumberOfBytes   = dword ptr  4
.text:000102C0
.text:000102C0 000 68 44 64 6B 20     push    ' kdD'   ; Tag
.text:000102C5 004 FF 74 24 08        push    [esp+4+NumberOfBytes] ; NumberOfBytes
.text:000102C9 008 6A 00              push    NonPagedPool    ; PoolType
.text:000102CB 00C FF 15 C0 06 01 00  call    ds:ExAllocatePoolWithTag
.text:000102D1 000 C3                 retn
.text:000102D1                          _NEW            endp

显然,楼主的反向结果比我的要更有意义。我想知道,如何从idapro原始的反向结果得到楼主的效果。
比如:在我的反响结果中:push    206B6444h       ; Tag如何变成.text:000102C0 000 68 44 64 6B 20     push    ' kdD'   ; Tag。

我的.text:00010489                 push    0               ; PoolType如何变成.text:000102C9 008 6A 00              push    NonPagedPool    ; 。

*********
问题问的比较粗浅。
2006-11-27 09:12
0
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
20
楼上没有安装符号文件吧?
2006-11-27 09:36
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
21
不是符号,类型、枚举都可以自己设置的。Tag是个字符串,按一下r就出来了。
2006-11-27 14:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
多谢回复。
如何创建自己的枚举类型?

顺便问一个其他的问题:IDApro有没有监视内存的功能?就和visual studio一样的memory窗口?我最近在分析一个程序的时候,找了半天,也没有看到实时监视内存的窗口。甚至看不到线程的调用堆栈窗口。
最后不得以,换了一个叫OllyDBG的工具才搞定。
我看本站有OllyDBG的简明教程。没有IDApro的教程。麻烦各位高人有时间照顾一下新人。
2006-11-28 08:50
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
23
你打开枚举类型窗口(shift+f10),然后按insert就可以插入枚举型了。可以自己建新的,也可以用系统定义的。
我不用IDA调试,调试用softice和ollydbg。IDA中要看内存直接双击或者go过去就可以了。IDA把程序完全展开在内存中,你看到的IDA窗口中的内容和实际内存中的是一样的。
2006-11-28 11:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
哈哈,好东西呀!!利害
2006-11-28 21:19
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
好文,学习。。
2006-11-30 00:02
0
游客
登录 | 注册 方可回帖
返回
//