在VC中,打破系统RING0级限制,让RING3级的应用程序执行光盘读取的INT13功能!这已经是在CSDN多天没有得到解决的问题了

hackerning 2001-03-05 07:15:00
打破系统RING0级限制,让RING3级的应用程序执行光盘读取的INT13功能!
大家帮助想想,
不用VXD技术
顶多修改IDT寄存器。
这已经是在CSDN多天没有得到解决的问题了
我不相信CSDN解决不了!
...全文
259 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowingedge 2001-04-30
  • 打赏
  • 举报
回复
fd()兄:
请原谅我的愚笨。能不能解释详细点????你说选择子的段地址部分一样??
中断例程和我自己的程序的段地址一样??如果是这样,是不是和windows的flat模式有关??
请教!!!
111222 2001-04-30
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/TopicView.asp?id=97760
fd 2001-04-30
  • 打赏
  • 举报
回复
应该是描述符
fd 2001-04-30
  • 打赏
  • 举报
回复
选择子所映射的偏移和界限都是一样的所以不用修改
snowingedge 2001-04-30
  • 打赏
  • 举报
回复
这段代码只是修改了IDT中断门的OFFSET部分,但选择子的段地址却没有修改。这对吗???
assert 2001-03-13
  • 打赏
  • 举报
回复
好象不是,抓个 CIH看看就知道了。
gongbird 2001-03-05
  • 打赏
  • 举报
回复
我在那个例子里些了一个调用VXD service的代码来证明是不是真的到了ring0,可是死机
能告诉我为什么吗?可以的话,帮我看看下面的问题好吗?
http://www.csdn.net/expert/TopicView.asp?id=69200
bzshow 2001-03-05
  • 打赏
  • 举报
回复
CIH的原理我不知道。

gongbird 2001-03-05
  • 打赏
  • 举报
回复
楼上的,那段代码是不是用的CIH的原理啊?
hackerning 2001-03-05
  • 打赏
  • 举报
回复
???
bzshow 2001-03-05
  • 打赏
  • 举报
回复
; This program switches ring from ring 3 to ring 0
; It utillizes the fact that the page where the IDT is store is not protected in
; win 9x.
; it fetches the gate of an exception and then saves it.
; then it makes the exception points down to code within the process context
; then it causes the exception which succesfully transfers to a ring 0 selector
; it iret's the interupt and restores the original gate so other programs can
; use it safely.

.386P
LOCALS
JUMPS
.MODEL FLAT, STDCALL ; with STDCALL we must reverse the sequence of pushes
; before a APIn call.

UNICODE = 0 ; Needed for w32.inc
INCLUDE W32.inc ; Windows definitions, messages, errors, structures,
; API functions declarations. Some additions of mine.
; Thanks to Barry Kauler and Sven Schreiber.


lp EQU OFFSET
extrn SetUnhandledExceptionFilter : PROC

.DATA
skod db 0
lpOldGate dd 0
IDT db 6 dup (0)
;---- Error Messages
szExceptionCaused db "Exception Caused - could not switch to ring 0",0
szError db "Error",0

ExceptionUsed EQU 5

.CODE
start:

call SetUnhandledExceptionFilter, lp ExceptCallBack ; Catch exceptions
; (security if ring transform
; doesn't work)
sidt fword ptr IDT ; fetch IDT register

mov ebx, dword ptr [IDT+2] ; ebx -> IDT
add ebx, 8*ExceptionUsed ; Ebx -> IDT entry of ExceptionUsed


cli ; Clear interupts

mov dx, word ptr [ebx+6] ; Save the current gate highword
shl edx, 16d
mov dx, word ptr [ebx] ; lowword
mov [lpOldGate], edx

mov eax, offset Ring0Code ; "install hook" - that is newgate
mov word ptr [ebx], ax ; lowword
shr eax, 16d
mov word ptr [ebx+6], ax ; highword

int ExceptionUsed ; cause exception

mov ebx, dword ptr [IDT+2] ; restore gate
add ebx, 8*ExceptionUsed
mov edx, [lpOldGate]
mov word ptr [ebx], dx
shr edx, 16d
mov word ptr [ebx+6], dx


CALL ExitProcess, -1 ; exit


Ring0Code PROC
mov eax, cr0 ; Ring0 code here..

iretd
Ring0Code ENDP

ExceptCallBack PROC
call MessageBoxA, 0, lp szError, lp szExceptionCaused, 0
call ExitProcess, -1
ret
ExceptCallBack ENDP


ends
end start
软件加密技术内幕chm文档及配套光盘 第1章 PE文件格式深入研究 1.1 PE文件格式格式纵览 1.1.1 区块(Section) 1.1.2 相对虚拟地址(Relative Virtual Addresses) 1.1.3 数据目录 1.1.4 输入函数(Importing Functions) 1.2 PE文件结构 1.2.1 The MS-DOS头部 1.2.2 IMAGE_NT_HEADERS头部 1.2.3 区块表(The Section Table) 1.2.4 各种块(Sections)的描述 1.2.5 输出表 1.2.6 输出转向(Export Forwarding) 1.2.7 输入表 1.2.8 绑定输入(Bound import) 1.2.9 延迟装入数据(Delayload Data) 1.2.10 资源 1.2.11 基址重定位(Base Relocations) 1.2.12 调试目录(DebugDirectory) 1.2.13 NET头部 1.2.14 TLS初始化 1.2.15 程序异常数据 第2章 PE分析工具编写 2.1 文件格式检查 2.2 FileHeader和OptionalHeader内容的读取 2.3 得到数据目录(Data Dircetory)信息 2.4 得到块表(SectionTable)信息 2.5 得到输出表(ExportTable)信息 2.6 得到输入表(ImportTable)信息 第3章 Win32 调试API 3.1 Win32调试API原理 3.1.1 调试相关函数简要说明 3.1.2 调试事件 3.1.3 如何在调试时创建并跟踪一个进程 3.1.4 最主要的循环体 3.1.5 如何处理调试事件 3.1.6 线程环境详解 3.1.7 如何在另一个进程注入代码 3.2 利用调试API编写脱壳机 3.2.1 tElock 0.98脱壳简介 3.2.2 脱壳机的编写 3.3 利用调试API制作内存补丁 3.3.1 跨进程内存存取机制 3.3.2 Debug API机制 第4章 Windows下的异常处理 4.1 基本概念 4.1.1 Windows下的软件异常 4.1.2 未公开的可靠吗 4.2 结构化异常处理(SEH) 4.2.1 异常处理的基本过程 4.2.2 SEH的分类 4.2.3 相关API 4.2.4 SEH相关数据结构 4.3 异常处理程序设计 4.3.1 顶层(top-level)异常处理 4.3.2 线程异常处理 4.3.3 异常处理的堆栈展开(Stack unwind) 4.3.4 异常处理程序设计的几个注意事项: 4.4 SEH的简单应用 4.4.1 Win9x下利用SEH进ring0 4.4.2 利用SEH实现对自身的单步自跟踪 4.4.3 其它应用 4.5 系统背后的秘密 4.6 VC是如何封装系统提供的SEH机制的 4.6.1 扩展的EXCEPTION_REGISTRATION相关结构 4.6.2 数据结构组织 4.7 Windows XP下的向量化异常处理(VEH) 第5章 软件加密技术 5.1 反调试技术(Anti-Debug) 5.1.1 句柄检测 5.1.2 SoftICE后门指令 5.1.3 int68子类型 5.1.4 ICECream子类型 5.1.5 判断NTICE服务是否运行 5.1.6 INT 1 检测 5.1.7 利用UnhandledExceptionFilter检测 5.1.8 INT 41子类型 5.2 反跟踪技术(Anti-Trace) 5.2.1 断点检测 5.2.2 利用SEH反跟踪 5.2.3 SMC技术实现 5.3 反加载技术(Anti-Loader) 5.3.1 利用TEB检测 5.3.2 利用IsDebuggerPresent函数检测 5.3.3 检查父进程 5.4 反DUMP技术(Anti-Dump) 5.5 文件完整性检验 5.5.1 CRC校验实现 5.5.2 校验和(Checksum) 5.5.3 内存映像校验 5.6 反监视技术(Anti-Monitor) 5.6.1 窗口方法检测 5.6.2 句柄检测 5.7 反静态分析技术 5.7.1 扰乱汇编代码 5.7.2 花指令 5.7.3 信息隐藏 5.8 代码与数据结合技术 5.9 软件保护的若干忠告 第6章 加壳软件编写 6.1 外壳编写基础 6.1.1 判断文件是否是PE格式的EXE文件 6.1.2 文件基本数据的读入 6.1.3 额外数据保留 6.1.4 重定位数据的去除 6.1.5 文件的压缩 6.1.6 资源区块的处理 6.1.7 区块的融合 6.1.8 输入表的处理 6.1.9 外壳部分的编写 6.1.10 将外壳部分添加至原程序 6.1.10 小结 6.2 加壳程序综合运用的实例 6.2.1 程序简介 6.2.2 加壳子程序(WJQ_ShellBegin()) 6.2.3 PE外壳程序 6.2.4 加进Anti技术 6.2.5 通过外壳修改被加壳PE 6.2.6 VC++调用汇编子程序 第7章 如何让壳与程序融为一体 7.1 序 7.1.1 为何需要壳和程序一体化 7.1.2 为阅读此章节需要的知识 7.1.3 基于此章节用的的例子程序说明 7.2 欺骗检查壳的工具 7.2.1 fi是如何检查壳的 7.2.2 欺骗fi 7.3 判断自己是否给脱壳了 7.3.1 判断文件尺寸 7.3.2 检查标记 7.3.3 外部检测(使用dll) 7.3.4 hook 相关的api(防止loader和调试api) 7.4 使用sdk把程序和壳溶为一体 7.4.1 sdk的意义 7.4.2 做一个带sdk的壳 7.5 后记:关于壳和程序的思考 第8章 Visual Basic 6 逆向工程 8.1 简介 8.2 P-code传奇 8.3 VB编译奥秘 8.4 VB与COM 8.5 VB可执行程序结构研究 8.6 VB程序事件解读 8.7 VB程序图形界面(GUI)解读 8.8 VB程序执行代码研究 8.9 我们的工具 8.10 VB程序保护篇 附录A 在Visual C++使用内联汇编 附录B 在Visual Basic使用汇编
软件加密技术内幕 要花时间看 第1章 PE文件格式深入研究 1.1 PE文件格式格式纵览 1.1.1 区块(Section) 1.1.2 相对虚拟地址(Relative Virtual Addresses) 1.1.3 数据目录 1.1.4 输入函数(Importing Functions) 1.2 PE文件结构 1.2.1 The MS-DOS头部 1.2.2 IMAGE_NT_HEADERS头部 1.2.3 区块表(The Section Table) 1.2.4 各种块(Sections)的描述 1.2.5 输出表 1.2.6 输出转向(Export Forwarding) 1.2.7 输入表 1.2.8 绑定输入(Bound import) 1.2.9 延迟装入数据(Delayload Data) 1.2.10 资源 1.2.11 基址重定位(Base Relocations) 1.2.12 调试目录(DebugDirectory) 1.2.13 NET头部 1.2.14 TLS初始化 1.2.15 程序异常数据 第2章 PE分析工具编写 2.1 文件格式检查 2.2 FileHeader和OptionalHeader内容的读取 2.3 得到数据目录(Data Dircetory)信息 2.4 得到块表(SectionTable)信息 2.5 得到输出表(ExportTable)信息 2.6 得到输入表(ImportTable)信息 第3章 Win32 调试API 3.1 Win32调试API原理 3.1.1 调试相关函数简要说明 3.1.2 调试事件 3.1.3 如何在调试时创建并跟踪一个进程 3.1.4 最主要的循环体 3.1.5 如何处理调试事件 3.1.6 线程环境详解 3.1.7 如何在另一个进程注入代码 3.2 利用调试API编写脱壳机 3.2.1 tElock 0.98脱壳简介 3.2.2 脱壳机的编写 3.3 利用调试API制作内存补丁 3.3.1 跨进程内存存取机制 3.3.2 Debug API机制 第4章 Windows下的异常处理 4.1 基本概念 4.1.1 Windows下的软件异常 4.1.2 未公开的可靠吗 4.2 结构化异常处理(SEH) 4.2.1 异常处理的基本过程 4.2.2 SEH的分类 4.2.3 相关API 4.2.4 SEH相关数据结构 4.3 异常处理程序设计 4.3.1 顶层(top-level)异常处理 4.3.2 线程异常处理 4.3.3 异常处理的堆栈展开(Stack unwind) 4.3.4 异常处理程序设计的几个注意事项: 4.4 SEH的简单应用 4.4.1 Win9x下利用SEH进ring0 4.4.2 利用SEH实现对自身的单步自跟踪 4.4.3 其它应用 4.5 系统背后的秘密 4.6 VC是如何封装系统提供的SEH机制的 4.6.1 扩展的EXCEPTION_REGISTRATION相关结构 4.6.2 数据结构组织 4.7 Windows XP下的向量化异常处理(VEH) 第5章 软件加密技术 5.1 反调试技术(Anti-Debug) 5.1.1 句柄检测 5.1.2 SoftICE后门指令 5.1.3 int68子类型 5.1.4 ICECream子类型 5.1.5 判断NTICE服务是否运行 5.1.6 INT 1 检测 5.1.7 利用UnhandledExceptionFilter检测 5.1.8 INT 41子类型 5.2 反跟踪技术(Anti-Trace) 5.2.1 断点检测 5.2.2 利用SEH反跟踪 5.2.3 SMC技术实现 5.3 反加载技术(Anti-Loader) 5.3.1 利用TEB检测 5.3.2 利用IsDebuggerPresent函数检测 5.3.3 检查父进程 5.4 反DUMP技术(Anti
第1章 PE文件格式深入研究

1.1 PE文件格式格式纵览

1.1.1 区块(Section)

1.1.2 相对虚拟地址(Relative Virtual Addresses)

1.1.3 数据目录

1.1.4 输入函数(Importing Functions)

1.2 PE文件结构

1.2.1 The MS-DOS头部

1.2.2 IMAGE_NT_HEADERS头部

1.2.3 区块表(The Section Table)

1.2.4 各种块(Sections)的描述

1.2.5 输出表

1.2.6 输出转向(Export Forwarding)

1.2.7 输入表

1.2.8 绑定输入(Bound import)

1.2.9 延迟装入数据(Delayload Data)

1.2.10 资源

1.2.11 基址重定位(Base Relocations)

1.2.12 调试目录(DebugDirectory)

1.2.13 NET头部

1.2.14 TLS初始化

1.2.15 程序异常数据



第2章 PE分析工具编写

2.1 文件格式检查

2.2 FileHeader和OptionalHeader内容的读取

2.3 得到数据目录(Data Dircetory)信息

2.4 得到块表(SectionTable)信息

2.5 得到输出表(ExportTable)信息

2.6 得到输入表(ImportTable)信息



第3章 Win32 调试API

3.1 Win32调试API原理

3.1.1 调试相关函数简要说明

3.1.2 调试事件

3.1.3 如何在调试时创建并跟踪一个进程

3.1.4 最主要的循环体

3.1.5 如何处理调试事件

3.1.6 线程环境详解

3.1.7 如何在另一个进程注入代码

3.2 利用调试API编写脱壳机

3.2.1 tElock 0.98脱壳简介

3.2.2 脱壳机的编写

3.3 利用调试API制作内存补丁

3.3.1 跨进程内存存取机制

3.3.2 Debug API机制



第4章 Windows下的异常处理

4.1 基本概念

4.1.1 Windows下的软件异常

4.1.2 未公开的可靠吗

4.2 结构化异常处理(SEH)

4.2.1 异常处理的基本过程

4.2.2 SEH的分类

4.2.3 相关API

4.2.4 SEH相关数据结构

4.3 异常处理程序设计

4.3.1 顶层(top-level)异常处理

4.3.2 线程异常处理

4.3.3 异常处理的堆栈展开(Stack unwind)

4.3.4 异常处理程序设计的几个注意事项:

4.4 SEH的简单应用

4.4.1 Win9x下利用SEH进ring0

4.4.2 利用SEH实现对自身的单步自跟踪

4.4.3 其它应用

4.5 系统背后的秘密

4.6 VC是如何封装系统提供的SEH机制的

4.6.1 扩展的EXCEPTION_REGISTRATION相关结构

4.6.2 数据结构组织

4.7 Windows XP下的向量化异常处理(VEH)





第5章 软件加密技术

5.1 反调试技术(Anti-Debug)

5.1.1 句柄检测

5.1.2 SoftICE后门指令

5.1.3 int68子类型

5.1.4 ICECream子类型

5.1.5 判断NTICE服务是否运行

5.1.6 INT 1 检测

5.1.7 利用UnhandledExceptionFilter检测

5.1.8 INT 41子类型

5.2 反跟踪技术(Anti-Trace)

5.2.1 断点检测

5.2.2 利用SEH反跟踪

5.2.3 SMC技术实现

5.3 反加载技术(Anti-Loader)

5.3.1 利用TEB检测

5.3.2 利用IsDebuggerPresent函数检测

5.3.3 检查父进程

5.4 反DUMP技术(Anti-Dump)

5.5 文件完整性检验

5.5.1 CRC校验实现

5.5.2 校验和(Checksum)

5.5.3 内存映像校验

5.6 反监视技术(Anti-Monitor)

5.6.1 窗口方法检测

5.6.2 句柄检测

5.7 反静态分析技术

5.7.1 扰乱汇编代码

5.7.2 花指令

5.7.3 信息隐藏

5.8 代码与数据结合技术

5.9 软件保护的若干忠告



第6章 加壳软件编写

6.1 外壳编写基础

6.1.1 判断文件是否是PE格式的EXE文件

6.1.2 文件基本数据的读入

6.1.3 额外数据保留

6.1.4 重定位数据的去除

6.1.5 文件的压缩

6.1.6 资源区块的处理

6.1.7 区块的融合

6.1.8 输入表的处理

6.1.9 外壳部分的编写

6.1.10 将外壳部分添加至原程序

6.1.10 小结

6.2 加壳程序综合运用的实例

6.2.1 程序简介

6.2.2 加壳子程序(WJQ_ShellBegin())

6.2.3 PE外壳程序

6.2.4 加进Anti技术

6.2.5 通过外壳修改被加壳PE

6.2.6 VC++调用汇编子程序



第7章 如何让壳与程序融为一体

7.1 序

7.1.1 为何需要壳和程序一体化

7.1.2 为阅读此章节需要的知识

7.1.3 基于此章节用的的例子程序说明

7.2 欺骗检查壳的工具

7.2.1 fi是如何检查壳的

7.2.2 欺骗fi

7.3 判断自己是否给脱壳了

7.3.1 判断文件尺寸

7.3.2 检查标记

7.3.3 外部检测(使用dll)

7.3.4 hook 相关的api(防止loader和调试api)

7.4 使用sdk把程序和壳溶为一体

7.4.1 sdk的意义

7.4.2 做一个带sdk的壳

7.5 后记:关于壳和程序的思考





第8章 Visual Basic 6 逆向工程

8.1 简介

8.2 P-code传奇

8.3 VB编译奥秘

8.4 VB与COM

8.5 VB可执行程序结构研究

8.6 VB程序事件解读

8.7 VB程序图形界面(GUI)解读

8.8 VB程序执行代码研究

8.9 我们的工具

8.10 VB程序保护篇



附录A 在Visual C++使用内联汇编

附录B 在Visual Basic使用汇编

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧