自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (2)
  • 收藏
  • 关注

空空如也

qt5.9 C++开发指南 源码

本书以Qt 5.9 LTS版本为开发平台,详细介绍了Qt C++开发应用程序的技术,包括Qt应用程序的基本架构、信号与槽工作机制、图形显示的Graphics/View架构、数据编辑和显示的Model/View架构、对话框和多窗口的设计与调用方法等,介绍了常用界面组件、文件读写、绘图、图表、数据可视化、数据库、多线程、网络和多媒体等模块的使用。每个编程主题都精心设计了完整的实例程序。 通过阅读本书,可了解Qt C++开发应用程序所需的基本技术。本书适合具有C++语言编程基础,希望应用Qt C++开发跨平台应用程序的读者阅读。 针对目前更新的Qt版本,未来三年内有持续的支持;介绍了Qt Charts, Data Visualization等新出现模块的使用;精心设计诸多完整的实例程序并提供源代码下载。 目 录 第 1章 认识Qt 1 1.1 Qt简介 1 1.2 Qt的获取与安装 1 1.2.1 Qt的许可类型 1 1.2.2 Qt的版本 2 1.2.3 Qt的下载与安装 2 1.3 Qt Creator初步使用 5 1.3.1 Qt Creator的界面组成 5 1.3.2 Qt Creator的设置 6 1.4 编写一个Hello World程序 7 1.4.1 新建一个项目 7 1.4.2 项目的文件组成和管理 10 目 录 第 1章 认识Qt 1 1.1 Qt简介 1 1.2 Qt的获取与安装 1 1.2.1 Qt的许可类型 1 1.2.2 Qt的版本 2 1.2.3 Qt的下载与安装 2 1.3 Qt Creator初步使用 5 1.3.1 Qt Creator的界面组成 5 1.3.2 Qt Creator的设置 6 1.4 编写一个Hello World程序 7 1.4.1 新建一个项目 7 1.4.2 项目的文件组成和管理 10 1.4.3 项目的编译、调试与运行 11 1.5 在Visual Studio里使用Qt 13 第 2章 GUI应用程序设计基础 16 2.1 UI文件设计与运行机制 16 2.1.1 项目文件组成 16 2.1.2 项目管理文件 16 2.1.3 界面文件 17 2.1.4 主函数文件 19 2.1.5 窗体相关的文件 20 2.2 可视化UI设计 25 2.2.1 实例程序功能 26 2.2.2 界面组件布局 26 2.2.3 信号与槽 29 2.2.4 可视化生成槽函数原型和 框架 30 2.3 代码化UI设计 34 2.3.1 实例功能 34 2.3.2 界面创建 34 2.3.3 信号与槽的关联 37 2.4 混合方式UI设计 37 2.4.1 设计目的 37 2.4.2 创建项目并添加资源文件 38 2.4.3 设计Action 39 2.4.4 设计菜单和工具栏 41 2.4.5 代码创建其他界面组件 44 2.4.6 Action的功能实现 45 2.4.7 手工创建的组件的 信号与槽 47 2.4.8 为应用程序设置图标 48 2.5 Qt Creator使用技巧 48 第3章 Qt类库概述 50 3.1 Qt核心特点 50 3.1.1 概述 50 3.1.2 元对象系统 50 3.1.3 属性系统 52 3.1.4 信号与槽 53 3.1.5 元对象特性测试实例 55 3.2 Qt全局定义 59 3.2.1 数据类型定义 60 3.2.2 函数 60 3.2.3 宏定义 61 3.3 容器类 62 3.3.1 容器类概述 62 3.3.2 顺序容器类 63 3.3.3 关联容器类 64 3.4 容器类的迭代 66 3.4.1 Java类型迭代器 66 3.4.2 STL类型迭代器 68 3.4.3 foreach关键字 69 3.5 Qt类库的模块 70 3.5.1 Qt基本模块 71 3.5.2 Qt附加模块 71 3.5.3 增值模块 72 3.5.4 技术预览模块 72 3.5.5 Qt工具 73 第4章 常用界面设计组件 74 4.1 字符串与输入输出 74 4.1.1 字符串与数值之间的转换 74 4.1.2 QString的常用功能 76 4.2 SpinBox的使用 78 4.3 其他数值输入和显示组件 80 4.3.1 实例功能 80 4.3.2 各组件的主要功能和属性 80 4.3.3 实例功能的代码实现 82 4.4 时间日期与定时器 84 4.4.1 时间日期相关的类 84 4.4.2 日期时间数据与字符串之间的 转换 84 4.4.3 QCalendarWidget日历组件 87 4.4.4 定时器的使用 87 4.5 QComboBox和QPlainTextEdit 89 4.5.1 实例功能概述 89 4.5.2 QComboBox的使用 89 4.5.3 QPlainTextEdit的使用 91 4.6 QListWidget和QToolButton 93 4.6.1 实例功能简介 93 4.6.2 界面设计 94 4.6.3 QListWidget的[]作 97 4.6.4 QToolButton与下拉式 菜单 99 4.6.5 创建右键快捷菜单 101 4.7 QTreeWidget和QDockWidget 102 4.7.1 实例功能概述 102 4.7.2 界面设计 103 4.7.3 QTreeWidget[]作 105 4.7.4 QLabel和Qpixmap 显示图片 110 4.7.5 QDockWidget的[]作 111 4.8 QTableWidget的使用 112 4.8.1 QTableWidget概述 112 4.8.2 界面设计与初始化 113 4.8.3 QTableWidget[]作 114 第5章 Model/View结构 120 5.1 Model/View结构 120 5.1.1 Model/View基本原理 120 5.1.2 数据模型 121 5.1.3 视图组件 122 5.1.4 代理 122 5.1.5 Model/View结构的一些 概念 123 5.2 QFileSystemModel 125 5.2.1 QFileSystemModel类的 基本功能 125 5.2.2 QFileSystemModel的 使用 125 5.3 QStringListModel 127 5.3.1 QstringListModel 功能概述 127 5.3.2 QStringListModel的使用 127 5.4 QStandardItemModel 130 5.4.1 功能概述 130 5.4.2 界面设计与主窗口类 定义 131 5.4.3 QStandardItemModel的 使用 132 5.5 自定义代理 139 5.5.1 自定义代理的功能 139 5.5.2 自定义代理类的基本 设计要求 139 5.5.3 基于QSpinBox的自定义 代理类 139 5.5.4 自定义代理类的使用 141 第6章 对话框与多窗体设计 143 6.1 标准对话框 143 6.1.1 概述 143 6.1.2 QFileDialog对话框 144 6.1.3 QColorDialog对话框 146 6.1.4 QFontDialog对话框 146 6.1.5 QInputDialog标准输入 对话框 147 6.1.6 QMessageBox消息对话框 149 6.2 自定义对话框及其调用 150 6.2.1 对话框的不同调用方式 150 6.2.2 对话框QWDialogSize的 创建和使用 152 6.2.3 对话框QWDialogHeaders的 创建和使用 154 6.2.4 对话框QWDialogLocate的 创建与使用 156 6.2.5 利用信号与槽实现交互 []作 160 6.3 多窗体应用程序设计 162 6.3.1 主要的窗体类及其用途 162 6.3.2 窗体类重要特性的设置 163 6.3.3 多窗口应用程序的设计 165 6.4 MDI应用程序设计 170 6.4.1 MDI简介 170 6.4.2 文档窗口类QFormDoc的 设计 171 6.4.3 MDI主窗口设计与子窗口的 使用 173 6.5 Splash与登录窗口 176 6.5.1 实例功能概述 176 6.5.2 对话框界面设计和类 定义 177 6.5.3 QDlgLogin类功能实现 178 6.5.4 Splash登录窗口的使用 181 第7章 文件系统和文件读写 182 7.1 文本文件读写 182 7.1.1 实例功能概述 182 7.1.2 QFile读写文本文件 182 7.1.3 QFile和QTextStream结合 读写文本文件 184 7.1.4 解决中文乱码的问题 185 7.2 二进制文件读写 186 7.2.1 实例功能概述 186 7.2.2 Qt预定义编码文件的读写 187 7.2.3 标准编码文件的读写 192 7.3 文件目录[]作 197 7.3.1 文件目录[]作相关的类 197 7.3.2 实例概述 197 7.3.3 QCoreApplication类 199 7.3.4 QFile类 199 7.3.5 QFileInfo类 200 7.3.6 QDir类 201 7.3.7 QTemporaryDir和 QTemporaryFile 203 7.3.8 QFileSystemWatcher类 203 第8章 绘图 206 8.1 QPainter基本绘图 206 8.1.1 QPainter绘图系统 206 8.1.2 QPen的主要功能 209 8.1.3 QBrush的主要功能 210 8.1.4 渐变填充 212 8.1.5 QPainter绘制基本图形 元件 214 8.2 坐标系统和坐标变换 217 8.2.1 坐标变换函数 217 8.2.2 坐标变换绘图实例 218 8.2.3 视口和窗口 221 8.2.4 绘图叠加的效果 223 8.3 Graphics View绘图架构 224 8.3.1 场景、视图与图形项 224 8.3.2 Graphics View的坐标 系统 226 8.3.3 Graphics View相关的类 227 8.3.4 Graphics View程序基本结构 和功能实现 229 8.3.5 Graphics View绘图程序 实例 235 第9章 Qt Charts 247 9.1 Qt Charts概述 247 9.1.1 Qt Charts模块 247 9.1.2 一个简单的QChart绘图 程序 248 9.1.3 图表的主要组成[]分 249 9.2 QChart绘制[]线图 253 9.2.1 实例功能 253 9.2.2 主窗口类定义和初始化 253 9.2.3 画笔设置对话框 QWDialogPen 256 9.2.4 QChart的设置 257 9.2.5 QLineSeries序列的设置 259 9.2.6 QValueAxis坐标轴的 设置 261 9.3 各种常见图表的绘制 263 9.3.1 实例功能概述 263 9.3.2 数据准备 264 9.3.3 柱状图 267 9.3.4 饼图 270 9.3.5 堆叠柱状图 273 9.3.6 百分比柱状图 274 9.3.7 散点图和光滑曲线图 276 9.4 图表的其他[]作 277 9.4.1 实例功能概述 277 9.4.2 自定义QWChartView类 278 9.4.3 主窗口类的设计 280 9.4.4 实时显示光标处的数值 281 9.4.5 QLegendMarker的使用 282 9.4.6 图表的缩放 283 第 10章 Data Visualization 284 10.1 Data Visualization模块概述 284 10.2 三维柱状图 285 10.2.1 实例功能 285 10.2.2 主窗口设计 286 10.2.3 三维柱状图的创建 287 10.2.4 三维柱状图属性设置 289 10.3 三维散点图 293 10.3.1 绘制三维散点图 293 10.3.2 三维坐标轴的方向 296 10.3.3 散点形状与大小 296 10.4 三维曲面绘图 296 10.4.1 三维曲面图 296 10.4.2 三维地形图 301 第 11章 数据库 305 11.1 Qt SQL模块概述 305 11.1.1 Qt SQL支持的数据库 305 11.1.2 SQLite数据库 306 11.1.3 Qt SQL模块的主要类 308 11.2 QSqlTableModel的使用 309 11.2.1 实例功能 309 11.2.2 主窗口设计 310 11.2.3 打开数据表 311 11.2.4 添加、插入与删除记录 319 11.2.5 保存与取消修改 319 11.2.6 设置和清除照片 320 11.2.7 数据记录的遍历 321 11.2.8 记录排序 322 11.2.9 记录过滤 322 11.3 QSqlQueryModel的使用 323 11.3.1 QSqlQueryModel功能 概述 323 11.3.2 使用QSqlQueryModel实现 数据查询 323 11.4 QSqlQuery的使用 327 11.4.1 QSqlQuery基本用法 327 11.4.2 QSqlQueryModel和 QSqlQuery联合使用 328 11.5 QSqlRelationalTableModel的 使用 336 11.5.1 关系型数据表和实例 功能 336 11.5.2 关系型数据模型功能 实现 338 第 12章 自定义插件和库 340 12.1 自定义Widget组件 340 12.1.1 自定义Widget子类 QmyBattery 340 12.1.2 自定义Widget组件的 使用 343 12.2 自定义Qt Designer插件 344 12.2.1 创建Qt Designer Widget插件项目 344 12.2.2 插件项目各文件的功能 实现 346 12.2.3 插件的编译与安装 349 12.2.4 使用自定义插件 350 12.2.5 使用MSVC编译器输出 中文的问题 352 12.3 创建和使用静态链接库 353 12.3.1 创建静态链接库 353 12.3.2 静态链接库的使用 354 12.4 创建和使用共享库 357 12.4.1 创建共享库 357 12.4.2 使用共享库 358 第 13章 多线程 362 13.1 QThread创建多线程程序 362 13.1.1 QThread类功能简介 362 13.1.2 掷骰子的线程 QDiceThread 363 13.1.3 掷骰子的多线程应用 程序 365 13.2 线程同步 367 13.2.1 线程同步的概念 367 13.2.2 基于互斥量的线程同步 368 13.2.3 基于QReadWriteLock的 线程同步 371 13.2.4 基于QWaitCondition的 线程同步 373 13.2.5 基于信号量的线程同步 377 第 14章 网络编程 383 14.1 主机信息查询 383 14.1.1 QHostInfo和 QNetworkInterface类 383 14.1.2 QHostInfo的使用 384 14.1.3 QNetworkInterface的 使用 386 14.2 TCP通信 388 14.2.1 TCP通信概述 388 14.2.2 TCP服务器端程序 设计 390 14.2.3 TCP客户端程序设计 395 14.3 QUdpSocket实现UDP通信 397 14.3.1 UDP通信概述 397 14.3.2 UDP单播和广播 398 14.3.3 UDP组播 402 14.4 基于HTTP协议的网络应用 程序 405 14.4.1 实现高层网络[]作的类 405 14.4.2 基于HTTP协议的网络 文件下载 406 第 15章 多媒体 409 15.1 Qt多媒体模块功能概述 409 15.2 音频播放 410 15.2.1 使用QMediaPlayer播放 音乐文件 410 15.2.2 使用QSoundEffect和Qsound 播放音效文件 415 15.3 音频输入 415 15.3.1 使用QAudioRecorder 录制音频 415 15.3.2 使用QAudioInput获取 音频输入 421 15.4 视频播放 428 15.4.1 在QVideoWidget上播放 视频 428 15.4.2 在QGraphicsVideoItem上 播放视频 431 15.5 摄像头的使用 433 15.5.1 摄像头控制概述 433 15.5.2 实例主窗口设计与初始化 435 15.5.3 QCamera对象创建与控制 436 15.5.4 QCameraImageCapture抓取静态图片 438 15.5.5 QMediaRecorder视频录制 439 第 16章 应用程序设计辅助功能 441 16.1 多语言界面 441 16.1.1 多语言界面设计概述 441 16.1.2 tr()函数的使用 441 16.1.3 生成语言翻译文件 442 16.1.4 使用Qt Linguist翻译ts文件 443 16.1.5 调用翻译文件改变界面语言 444 16.2 使用样式表自定义界面 446 16.2.1 Qt样式表 446 16.2.2 Qt样式表句法 447 16.2.3 样式表的使用 453 16.3 使用QStyle设置界面外观 455 16.3.1 QStyle的作用 455 16.3.2 Qt内置样式的使用 456 16.4 Qt应用程序的发布 457 16.4.1 应用程序发布方式 457 16.4.2 Windows平台上的应用程序发布 458 显示全[]信息

2018-06-20

软件保护及分析技术 源码

软件保护及分析技术——原理与实践 ; 章立春 著 目录 第0章 准备知识 1 0.1 Win32程序 1 0.2 PE程序文件 3 0.3 Win32进程的启动 5 0.4 PE程序的加载 7 第1部分 软件保护 第1章 软件保护技术 11 1.1 反调试 11 1.1.1 函数检测 12 1.1.2 数据检测 12 1.1.3 符号检测 13 1.1.4 窗口检测 13 1.1.5 特征码检测 14 1.1.6 行为检测 14 1.1.7 断点检测 15 1.1.8 功能破坏 16 1.1.9 行为占用 16 1.2 反虚拟机 17 1.3 数据校验 18 1.4 导入表加密 19 1.5 模块拷贝移位 27 1.6 资源加密 29 1.7 代码加密 30 1.7.1 代码变形 30 1.7.2 花指令 33 1.7.3 代码乱序 33 1.7.4 多分支 35 1.7.5 call链 36 1.8 代码虚拟化 37 1.8.1 堆机 39 1.8.2 栈机 40 1.8.3 状态机 42 1.9 脚本引擎 42 1.10 网络加密 42 1.11 硬件加密 42 1.12 代码签名 43 第2章 软件保护系统 44 2.1 保护功能 44 2.1.1 试用控制 44 2.1.2 授权控制 45 2.1.3 功能扩展 45 2.2 保护系统 45 2.2.1 WinLicense和Themida 46 2.2.2 VMProtect 47 第3章 软件保护强化 48 3.1 设计优化 49 3.1.1 技巧1:代码习惯优化 49 3.1.2 技巧2:SDK使用优化 51 3.1.3 技巧3:验证保护系统 52 3.2 加壳优化 52 3.2.1 技巧1:侧重选择代码加密 53 3.2.2 技巧2:精选被保护代码 54 3.2.3 技巧3:充分测试 55 第2部分 软件破解 第4章 软件破解工具 58 4.1 调试分析工具 58 4.1.1 OllyDbg 58 4.1.2 WinDBG 59 4.1.3 IDA 60 4.2 修改工具 60 4.2.1 LordPE 60 4.2.2 010Editor 61 4.3 自动化工具 61 第5章 软件破解技术 62 5.1 静态分析 63 5.1.1 基本信息分析 63 5.1.2 代码静态分析 67 5.2 软件调试 68 5.2.1 一般调试原理 68 5.2.2 伪调试技术 72 5.2.3 本地调试 73 5.2.4 远程调试 74 5.2.5 虚拟机调试 76 5.3 反反调试 77 5.4 HOOK 78 5.4.1 代码HOOK 79 5.4.2 函数HOOK 86 5.4.3 模块HOOK 86 5.4.4 导出表HOOK 92 5.5 代码注入 94 5.6 补丁 101 5.6.1 冷补丁 101 5.6.2 热补丁 102 5.6.3 SMC 102 5.6.4 虚拟化补丁 103 5.7 模块重定位 103 5.8 沙箱技术 104 5.9 虚拟化 106 5.10 代码虚拟机 107 5.10.1 OP分支探测 108 5.10.2 OP调试 113 5.11 自动化技术 114 5.11.1 代码追踪 114 5.11.2 预执行 118 5.11.3 代码简化 120 5.11.4 代码重建 124 5.11.5 块执行 125 5.11.6 多分支剔除 126 5.11.7 小结 129 5.12 动态分析 129 5.12.1 着色 129 5.12.2 黑盒测试 132 5.13 功能模拟 132 5.13.1 授权模拟 132 5.13.2 网络模拟 134 5.13.3 加密狗模拟 134 5.14 脱壳 134 5.14.1 导入表重建 135 5.14.2 资源重建 149 5.14.3 区段重建 152 5.14.4 OEP定位 154 5.14.5 PE头修复 159 5.14.6 重定位修复 159 5.14.7 PE重建 163 5.14.8 补区段 164 5.15 进程快照技术 166 5.15.1 进程快照技术概述 166 5.15.2 快照脱壳 178 5.16 代码回溯技术 180 第6章 软件分析技巧 184 6.1 技巧1:精确代码范围 184 6.2 技巧2:多用对比参考 186 6.3 技巧3:逆向思考 187 6.4 技巧4:多利用自动化优势 187 6.5 技巧5:利用环境优势 187 6.6 技巧6:尽量避免算法分析 187 6.7 技巧7:够用原则 188 第3部分 自己动手 第7章 打造函数监视器 190 7.1 制定功能 190 7.2 确定技术方案 191 7.3 开发筹备 192 7.4 具体实现 193 7.4.1 启动目标进程并注入xVMRuntime模块 196 7.4.2 通信协议 199 7.4.3 事件设定 201 7.4.4 辅助调试功能 216 7.4.5 技术问题 217 7.5 效果演示 217 第8章 打造资源重建工具 220 8.1 制定功能 220 8.2 确定技术方案 220 8.3 开发筹备 222 8.4 具体实现 222 8.4.1 数据结构及通信协议 222 8.4.2 获取内存段资源数据 223 8.4.3 监控资源函数获取数据 225 8.4.4 强制搜索内存穷举获取数据 227 8.4.5 重建资源区段 230 8.4.6 技术问题 234 8.5 效果演示 235 第9章 打造重定位修复工具 238 9.1 制定功能 238 9.2 确定技术方案 238 9.3 开发筹备 239 9.4 具体实现 239 9.4.1 通信协议 239 9.4.2 注入模块 240 9.4.3 抓取内存快照 240 9.4.4 对比内存数据 244 9.4.5 重建重定位区段 245 9.5 效果演示 248 9.5.1 DLL模块重定位修复 249 9.5.2 主模块重定位修复 251 第10章 打造进程拍照机 253 10.1 制定功能 253 10.2 确定技术方案 253 10.3 开发筹备 255 10.4 具体实现 255 10.4.1 先期模块注入 255 10.4.2 接管进程内存管理 261 10.4.3 建立函数调用中间层 268 10.4.4 实现场景载入功能 269 10.4.5 转储并修正映像及相关数据 270 10.4.6 增加TIB转储 274 10.5 效果演示 276 10.5.1 WinLicense测试 276 10.5.2 VMProtect测试 279 第11章 打造函数通用追踪器 281 11.1 制定功能 281 11.2 确定技术方案 281 11.3 开发筹备 282 11.4 具体实现 283 11.4.1 建立插件框架 283 11.4.2 分层式虚拟机 284 11.4.3 调用代码查找识别 287 11.5 追踪函数 294 11.6 重建导入表 299 11.7 修复调用代码 304 11.7.1 内存式修复 305 11.7.2 文件式修复 307 11.8 效果演示 309 第12章 打造预执行调试器 312 12.1 制定功能 312 12.2 确定技术方案 312 12.3 开发筹备 313 12.4 具体实现 313 12.4.1 预执行功能 313 12.4.2 代码追踪记录功能 317 12.4.3 块执行功能 321 12.4.4 OP记录调试功能 327 12.5 效果演示 331 第13章 打造伪调试器 335 13.1 制定功能 335 13.2 确定技术方案 335 13.3 开发筹备 336 13.4 具体实现 336 13.4.1 数据结构与通信协议 337 13.4.2 第1步:界面相关工作 338 13.4.3 第2步:在调试端启用和禁用伪调试技术 339 13.4.4 第3步:创建调试目标 341 13.4.5 第4步:等待调试事件主循环 344 13.4.6 第5步:被调试端的初始化 346 13.4.7 第6步:中转异常 349 13.4.8 第7步:辅助调试函数实现 350 13.4.9 小结 354 13.5 效果演示 354 第4部分 实例分析 第14章 VMProtect虚拟机分析 358 第15章 WinLicense虚拟机分析 375 第5部分 脱壳实例 第16章 VMProtect脱壳 382 第17章 WinLicense脱壳 394

2018-06-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除