Linux 内核情景分析 pdf
分析的较为透彻的一本linux内核方面的书,适合初学者研究学习~
Linux device driver - Linux设备驱动 chm 中文版
经典中文版~~ chm格式
目录
1. 第一章 设备驱动简介
1.1. 驱动程序的角色
1.2. 划分内核
1.2.1. 可加载模块
1.3. 设备和模块的分类
1.4. 安全问题
1.5. 版本编号
1.6. 版权条款
1.7. 加入内核开发社团
1.8. 本书的内容
2. 建立和运行模块
2.1. 设置你的测试系统
2.2. Hello World 模块
2.3. 内核模块相比于应用程序
2.3.1. 用户空间和内核空间
2.3.2. 内核的并发
2.3.3. 当前进程
2.3.4. 几个别的细节
2.4. 编译和加载
2.4.1. 编译模块
2.4.2. 加载和卸载模块
2.4.3. 版本依赖
2.4.4. 平台依赖性
2.5. 内核符号表
2.6. 预备知识
2.7. 初始化和关停
2.7.1. 清理函数
2.7.2. 初始化中的错误处理
2.7.3. 模块加载竞争
2.8. 模块参数
2.9. 在用户空间做
2.10. 快速参考
3. 字符驱动
3.1. scull 的设计
3.2. 主次编号
3.2.1. 设备编号的内部表示
3.2.2. 分配和释放设备编号
3.2.3. 主编号的动态分配
3.3. 一些重要数据结构
3.3.1. 文件操作
3.3.2. 文件结构
3.3.3. inode 结构
3.4. 字符设备注册
3.4.1. scull 中的设备注册
3.4.2. 老方法
3.5. open 和 release
3.5.1. open 方法
3.5.2. release 方法
3.6. scull 的内存使用
3.7. 读和写
3.7.1. read 方法
3.7.2. write 方法
3.7.3. readv 和 writev
3.8. 使用新设备
3.9. 快速参考
4. 调试技术
4.1. 内核中的调试支持
4.2. 用打印调试
4.2.1. printk
4.2.2. 重定向控制台消息
4.2.3. 消息是如何记录的
4.2.4. 打开和关闭消息
4.2.5. 速率限制
4.2.6. 打印设备编号
4.3. 用查询来调试
4.3.1. 使用 /proc 文件系统
4.3.2. ioctl 方法
4.4. 使用观察来调试
4.5. 调试系统故障
4.5.1. oops 消息
4.5.2. 系统挂起
4.6. 调试器和相关工具
4.6.1. 使用 gdb
4.6.2. kdb 内核调试器
4.6.3. kgdb 补丁
4.6.4. 用户模式 Linux 移植
4.6.5. Linux 追踪工具
4.6.6. 动态探针
5. 并发和竞争情况
5.1. scull 中的缺陷
5.2. 并发和它的管理
5.3. 旗标和互斥体
5.3.1. Linux 旗标实现
5.3.2. 在 scull 中使用旗标
5.3.3. 读者/写者旗标
5.4. Completions 机制
5.5. 自旋锁
5.5.1. 自旋锁 API 简介
5.5.2. 自旋锁和原子上下文
5.5.3. 自旋锁函数
5.5.4. 读者/写者自旋锁
5.6. 锁陷阱
5.6.1. 模糊的规则
5.6.2. 加锁顺序规则
5.6.3. 细 -粗- 粒度加锁
5.7. 加锁的各种选择
5.7.1. 不加锁算法
5.7.2. 原子变量
5.7.3. 位操作
5.7.4. seqlock 锁
5.7.5. 读取-拷贝-更新
5.8. 快速参考
6. 高级字符驱动操作
6.1. ioctl 接口
6.1.1. 选择 ioctl 命令
6.1.2. 返回值
6.1.3. 预定义的命令
6.1.4. 使用 ioctl 参数
6.1.5. 兼容性和受限操作
6.1.6. ioctl 命令的实现
6.1.7. 不用 ioctl 的设备控制
6.2. 阻塞 I/O
6.2.1. 睡眠的介绍
6.2.2. 简单睡眠
6.2.3. 阻塞和非阻塞操作
6.2.4. 一个阻塞 I/O 的例子
6.2.5. 高级睡眠
6.2.6. 测试 scullpipe 驱动
6.3. poll 和 select
6.3.1. 与 read 和 write 的交互
6.3.2. 底层的数据结构
6.4. 异步通知
6.4.1. 驱动的观点
6.5. 移位一个设备
6.5.1. llseek 实现
6.6. 在一个设备文件上的存取控制
6.6.1. 单 open 设备
6.6.2. 一次对一个用户限制存取
6.6.3. 阻塞 open 作为对 EBUSY 的替代
6.6.4. 在 open 时复制设备
6.7. 快速参考
7. 时间, 延时, 和延后工作
7.1. 测量时间流失
7.1.1. 使用 jiffies 计数器
7.1.2. 处理器特定的寄存器
7.2. 获知当前时间
7.3. 延后执行
7.3.1. 长延时
7.3.2. 短延时
7.4. 内核定时器
7.4.1. 定时器 API
7.4.2. 内核定时器的实现
7.5. Tasklets 机制
7.6. 工作队列
7.6.1. 共享队列
7.7. 快速参考
7.7.1. 时间管理
7.7.2. 延迟
7.7.3. 内核定时器
7.7.4. Tasklets 机制
7.7.5. 工作队列
8. 分配内存
8.1. kmalloc 的真实故事
8.1.1. flags 参数
8.1.2. size 参数
8.2. 后备缓存
8.2.1. 一个基于 Slab 缓存的 scull: scullc
8.2.2. 内存池
8.3. get_free_page 和其友
8.3.1. 一个使用整页的 scull: scullp
8.3.2. alloc_pages 接口
8.3.3. vmalloc 和 其友
8.3.4. 一个使用虚拟地址的 scull : scullv
8.4. 每-CPU 的变量
8.5. 获得大量缓冲
8.5.1. 在启动时获得专用的缓冲
8.6. 快速参考
9. 与硬件通讯
9.1. I/O 端口和 I/O 内存
9.1.1. I/O 寄存器和常规内存
9.2. 使用 I/O 端口
9.2.1. I/O 端口分配
9.2.2. 操作 I/O 端口
9.2.3. 从用户空间的 I/O 存取
9.2.4. 字串操作
9.2.5. 暂停 I/O
9.2.6. 平台依赖性
9.3. 一个 I/O 端口例子
9.3.1. 并口纵览
9.3.2. 一个例子驱动
9.4. 使用 I/O 内存
9.4.1. I/O 内存分配和映射
9.4.2. 存取 I/O 内存
9.4.3. 作为 I/O 内存的端口
9.4.4. 重用 short 为 I/O 内存
9.4.5. 在 1 MB 之下的 ISA 内存
9.4.6. isa_readb 和其友
9.5. 快速参考
10. 中断处理
10.1. 准备并口
10.2. 安装一个中断处理
10.2.1. /proc 接口
10.2.2. 自动检测 IRQ 号
10.2.3. 快速和慢速处理
10.2.4. 实现一个处理
10.2.5. 处理者的参数和返回值
10.2.6. 使能和禁止中断
10.3. 前和后半部
10.3.1. Tasklet 实现
10.3.2. 工作队列
10.4. 中断共享
10.4.1. 安装一个共享的处理者
10.4.2. 运行处理者
10.4.3. /proc 接口和共享中断
10.5. 中断驱动 I/O
10.5.1. 一个写缓存例子
10.6. 快速参考
11. 内核中的数据类型
11.1. 标准 C 类型的使用
11.2. 安排一个明确大小给数据项
11.3. 接口特定的类型
11.4. 其他移植性问题
11.4.1. 时间间隔
11.4.2. 页大小
11.4.3. 字节序
11.4.4. 数据对齐
11.4.5. 指针和错误值
11.5. 链表
11.6. 快速参考
12. PCI 驱动
12.1. PCI 接口
12.1.1. PCI 寻址
12.1.2. 启动时间
12.1.3. 配置寄存器和初始化
12.1.4. MODULEDEVICETABLE 宏
12.1.5. 注册一个 PCI 驱动
12.1.6. 老式 PCI 探测
12.1.7. 使能 PCI 设备
12.1.8. 存取配置空间
12.1.9. 存取 I/O 和内存空间
12.1.10. PCI 中断
12.1.11. 硬件抽象
12.2. 回顾: ISA
12.2.1. 硬件资源
12.2.2. ISA 编程
12.2.3. 即插即用规范
12.3. PC/104 和 PC/104+
12.4. 其他的 PC 总线
12.4.1. MCA 总线
12.4.2. EISA 总线
12.4.3. VLB 总线
12.5. SBus
12.6. NuBus 总线
12.7. 外部总线
12.8. 快速参考
13. USB 驱动
13.1. USB 设备基础知识
13.1.1. 端点
13.1.2. 接口
13.1.3. 配置
13.2. USB 和 sysfs
13.3. USB 的 Urbs
13.3.1. 结构 struct urb
13.3.2. 创建和销毁 urb
13.3.3. 提交 urb
13.3.4. 完成 urb: 完成回调处理者
13.3.5. 取消 urb
13.4. 编写一个 USB 驱动
13.4.1. 驱动支持什么设备
13.4.2. 注册一个 USB 驱动
13.4.3. 提交和控制一个 urb
13.5. 无 urb 的 USB 传送
13.5.1. usb_bulk_msg 接口
13.5.2. usb_control_msg 接口
13.5.3. 使用 USB 数据函数
13.6. 快速参考
14. Linux 设备模型
14.1. Kobjects, Ksets 和 Subsystems
14.1.1. Kobject 基础
14.1.2. kobject 层次, kset, 和子系统
14.2. 低级 sysfs 操作
14.2.1. 缺省属性
14.2.2. 非缺省属性
14.2.3. 二进制属性
14.2.4. 符号连接
14.3. 热插拔事件产生
14.3.1. 热插拔操作
14.4. 总线, 设备, 和驱动
14.4.1. 总线
14.4.2. 设备
14.4.3. 设备驱动
14.5. 类
14.5.1. class_simple 接口
14.5.2. 完整的类接口
14.6. 集成起来
14.6.1. 添加一个设备
14.6.2. 去除一个设备
14.6.3. 添加一个驱动
14.6.4. 去除一个驱动
14.7. 热插拔
14.7.1. 动态设备
14.7.2. /sbin/hotplug 工具
14.7.3. 使用 /sbin/hotplug
14.8. 处理固件
14.8.1. 内核固件接口
14.8.2. 它如何工作
14.9. 快速参考
14.9.1. Kobjects结构
14.9.2. sysfs 操作
14.9.3. 总线, 设备, 和驱动
14.9.4. 类
14.9.5. 固件
15. 内存映射和 DMA
15.1. Linux 中的内存管理
15.1.1. 地址类型
15.1.2. 物理地址和页
15.1.3. 高和低内存
15.1.4. 内存映射和 struct page
15.1.5. 页表
15.1.6. 虚拟内存区
15.1.7. 进程内存映射
15.2. mmap 设备操作
15.2.1. 使用 remap_pfn_range
15.2.2. 一个简单的实现
15.2.3. 添加 VMA 的操作
15.2.4. 使用 nopage 映射内存
15.2.5. 重新映射特定 I/O 区
15.2.6. 重新映射 RAM
15.2.7. 重映射内核虚拟地址
15.3. 进行直接 I/O
15.3.1. 异步 I/O
15.4. 直接内存存取
15.4.1. 一个 DMA 数据传输的概况
15.4.2. 分配 DMA 缓冲
15.4.3. 总线地址
15.4.4. 通用 DMA 层
15.4.5. ISA 设备的 DMA
15.5. 快速参考
15.5.1. 介绍性材料
15.5.2. 实现 mmap
15.5.3. 实现直接 I/O
15.5.4. 直接内存存取
16. 块驱动
16.1. 注册
16.1.1. 块驱动注册
16.1.2. 磁盘注册
16.1.3. 在 sbull 中的初始化
16.1.4. 注意扇区大小
16.2. 块设备操作
16.2.1. open 和 release 方法
16.2.2. 支持可移出的介质
16.2.3. ioctl 方法
16.3. 请求处理
16.3.1. 对请求方法的介绍
16.3.2. 一个简单的请求方法
16.3.3. 请求队列
16.3.4. 请求的分析
16.3.5. 请求完成函数
16.4. 一些其他的细节
16.4.1. 命令预准备
16.4.2. 被标识的命令排队
16.5. 快速参考
17. 网络驱动
17.1. snull 是如何设计的
17.1.1. 分配 IP 号
17.1.2. 报文的物理传送
17.2. 连接到内核
17.2.1. 设备注册
17.2.2. 初始化每一个设备
17.2.3. 模块卸载
17.3. net_device 结构的详情
17.3.1. 全局信息
17.3.2. 硬件信息
17.3.3. 接口信息
17.3.4. 设备方法
17.3.5. 公用成员
17.4. 打开与关闭
17.5. 报文传送
17.5.1. 控制发送并发
17.5.2. 传送超时
17.5.3. 发散/汇聚 I/O
17.6. 报文接收
17.7. 中断处理
17.8. 接收中断缓解
17.9. 连接状态的改变
17.10. Socket 缓存
17.10.1. 重要成员变量
17.10.2. 作用于 socket 缓存的函数
17.11. MAC 地址解析
17.11.1. 以太网使用 ARP
17.11.2. 不考虑 ARP
17.11.3. 非以太网头部
17.12. 定制 ioctl 命令
17.13. 统计信息
17.14. 多播
17.14.1. 多播的内核支持
17.14.2. 典型实现
17.15. 几个其他细节
17.15.1. 独立于媒介的接口支持
17.15.2. ethtool 支持
17.15.3. netpoll
17.16. 快速参考
18. TTY 驱动
18.1. 一个小 TTY 驱动
18.1.1. 结构 struct termios
18.2. tty_driver 函数指针
18.2.1. open 和 close
18.2.2. 数据流
18.2.3. 其他缓冲函数
18.2.4. 无 read 函数?
18.3. TTY 线路设置
18.3.1. set_termios 函数
18.3.2. tiocmget 和 tiocmset
18.4. ioctls 函数
18.5. TTY 设备的 proc 和 sysfs 处理
18.6. tty_driver 结构的细节
18.7. tty_operaions 结构的细节
18.8. tty_struct 结构的细节
18.9. 快速参考
Windows_CE嵌入式系统
同济大学何宗键老师的书,绝对是好书。
第一章:Windows CE简介
第二章:Windows CE的体系结构和功能
第三章:应用程序开发总览
第四章:操作系统设计
第五章:驱动程序设计
第六章:操作系统移植
第七章:附录
makefile入门
批处理入门
Windows CE.net内核定制及应用开发
详细介绍了WinCE系统开发中的各类问题,包括定制操作系统镜像,驱动程序开发,应用程序开发,WinCE系统结构。
WinCE常见问题解答
介绍了WinCE系统开发过程中可能遇到的各类问题,仅作参考。
DLL动态链接库编写教程
本文档细致的介绍了DLL动态库的编写,介绍了常见问题,合适新手入门阅读。
Windows CE下的串口驱动设计
西安电子科技大学外部设备研究所的一片论文,介绍了Windows CE下的驱动程序的结构、开发过程及Windows CE的中断处理过程,提出流接口和分层相结合的驱动程序设计方案,给出Windows CE 下串口驱动的具体开发过程及串口驱动的中断处理过程。
WinCE串口驱动分析
对wince串口驱动的详细分析,描述了各个接口。
WinCE+设备驱动程序开发指南
讲解比较详细,合适新手入门,对常见驱动类型做了讲解,如本机驱动,流接口驱动,声音驱动,打印机驱动,显示器驱动,USB驱动,NDIS网络驱动,块设备驱动。
2005-02-07-Undocumented functions of NTDLL.chm
This is an advanced, low-level programer's guide to Windows NT Kernel, Native API and drivers.
逆向C++ Reverse C++.pdf
这些年来,逆向工程分析人员一直是凭借着汇编和C的知识对大多数软件进行逆向工程的,但是,现在随着越来越多的应用软件和恶意程序转而使用C++进行开发,深入理解C++面向对象方式开发的软件的反汇编技术就显得越发的必要。本文试图通过分析在反汇编时如何手工识别C++对象,进而讨论如何自动完成这一分析过程,一步一步帮助读者掌握逆向C++程序的一些方法。
Windows Internals-Fourth Edition.chm
深入学习Windows必读,详细讲解有关Windows内部原理的方方面面。 By Mark E. Russinovich, David A. Solomon
Chapter 1. Concepts and Tools
Windows Operating System Versions
Foundation Concepts and Terms
Digging into Windows Internals
Conclusion
Chapter 2. System Architecture
Requirements and Design Goals
Operating System Model
Architecture Overview
Key System Components
Conclusion
Chapter 3. System Mechanisms
Trap Dispatching
Object Manager
Synchronization
System Worker Threads
Windows Global Flags
Local Procedure Calls (LPCs)
Kernel Event Tracing
Wow64
Conclusion
Chapter 4. Management Mechanisms
The Registry
Services
Windows Management Instrumentation
Conclusion
Chapter 5. Startup and Shutdown
Boot Process
Troubleshooting Boot and Startup Problems
Shutdown
Conclusion
Chapter 6. Processes, Threads, and Jobs
Process Internals
Flow of CreateProcess
Thread Internals
Examining Thread Activity
Thread Scheduling
Job Objects
Conclusion
Chapter 7. Memory Management
Introduction to the Memory Manager
Services the Memory Manager Provides
System Memory Pools
Virtual Address Space Layouts
Address Translation
Page Fault Handling
Virtual Address Descriptors
Section Objects
Working Sets
Logical Prefetcher
Page Frame Number Database
Conclusion
Chapter 8. Security
Security Ratings
Trusted Computer System Evaluation Critiera
The Common Criteria
Security System Components
Protecting Objects
Account Rights and Privileges
Security Auditing
Logon
Software Restriction Policies
Conclusion
Chapter 9. I/O System
I/O System Components
Device Drivers
I/O Processing
The Plug and Play (PnP) Manager
The Power Manager
Conclusion
Chapter 10. Storage Management
Storage Terminology
Disk Drivers
Volume Management
Conclusion
Chapter 11. Cache Manager
Key Features of the Cache Manager
Cache Virtual Memory Management
Cache Size
Cache Data Structures
File System Interfaces
Fast I/O
Read Ahead and Write Behind
Conclusion
Chapter 12. File Systems
Windows File System Formats
File System Driver Architecture
Troubleshooting File System Problems
NTFS Design Goals and Features
NTFS File System Driver
NTFS On-Disk Structure
NTFS Recovery Support
Encrypting File System Security
Conclusion
Chapter 13. Networking
Windows Networking Architecture
Networking APIs
Multiple Redirector Support
Name Resolution
Protocol Drivers
NDIS Drivers
Binding
Layered Network Services
Conclusion
Chapter 14. Crash Dump Analysis
Why Does Windows Crash?
The Blue Screen
Crash Dump Files
Windows Error Reporting
Online Crash Analysis
Basic Crash Dump Analysis
Using Crash Troubleshooting Tools
Advanced Crash Dump Analysis
Glossary
Index
部分外企笔试真题总结.pdf
Microsoft
IBM
PWC
CICC
IBD/Research, 031114 清华考场
P&G
KPMG
Intel
Deloitte
SAP
Goldman Sachs
Ericsson
Cisco
ASR
Oracle
linux内核编程.pdf
Linux内核编程
著者:Ori Pomerantz
翻译:徐辉
目 录
1.HELLO, WORLD................................................................................................三
EXHELLO.C..............................................................................................................三
1.1内核模块的编译文件........................................................................................................四
1.2 多文件内核模块..................................................................................................................五
2.字符设备文件.......................................................................................................八
2.1多内核版本源文件........................................................................................................十六
3./PROC文件系统...............................................................................................十七
4.使用/PROC进行输入...................................................................................二十二
5.和设备文件对话(写和IOCTLS)................................................................三十
6.启动参数.......................................................................................................四十四
7.系统调用.......................................................................................................四十七
8.阻塞进程.......................................................................................................五十三
9.替换PRINTK’S............................................................................................六十三
10.调度任务.....................................................................................................六十六
11.中断处理程序..............................................................................................七十一
11.1 INTEL 结构上的键盘.........................................................................................七十一
12.对称多处理.................................................................................................七十五
常见的错误.........................................................................................................七十六
2.0和2.2版本的区别........................................................................................七十六
除此以外.............................................................................................................七十六
其他......................................................................................................................七十八
GOODS AND SERVICES.....................................................................................................七十八
GNU GENERAL PUBLIC LICENSE........................................................................七十八
注..........................................................................................................................八十四
加密解密.技术内幕.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中使用汇编
加密解密.技术内幕.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中使用汇编
小波十讲-PDF版本 详细讲解小波理论
全面详细讲解小波分析,深入学习小波必备。pdf版本
小波基础概念,连续小波变换,离散小波变换,多尺度分析,紧支撑小波,泛函空间的小波刻画
Ida Tutorial.pdf
IDA–Interactive Disassembler学习最权威的资料。详细讲解了关于IDA使用的各个方面。英文版
Undocumented Windows 2000 Secrets.pdf
本文章对于 Windows 2000 Native API 的讨论,主要集中在这些 API 和系统模块之间的关系,将重点介绍 Windows 2000 采用的中断机制。 Windows 2000 利用此机制将对内核服务的请求从用户模式向内核模式传递。另外, Win32K 接口和一些与 Native API 相关的主要运行时库也会被提及,同时还将介绍一些经常使用的数据类型。
Windows中断处理过程.pdf
初步介绍了windows系统中断处理的知识
关于SSDT的详解.pdf
详细介绍了ssdt的原理,剖析了windows系统特权级别的切换。有助于windows内核的学习
链接器和加载器 beta2.pdf
链接器和加载器做什么?
任何一个链接器和加载器的基本工作都非常简单: 将更抽象的名字与更底层的名字绑
定起来,好让程序员使用更抽象的名字编写代码。也就是说,它可以将程序员写的一个诸如
getline的名字绑定到“iosys模块内可执行代码的612字节处”或者可以采用诸如“这个模
块的静态数据开始的第450个字节处”这样更抽象的数字地址然后将其绑定到数字地址上。