自定义博客皮肤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)
  • 资源 (7)
  • 收藏
  • 关注

空空如也

Android软件安全与逆向分析随书源代码

Android软件安全与逆向分析随书源码

2018-10-31

C Primer Plus(第6版)中文版 最新 最完整 超清版(带书签目录)

C Primer Plus(第6版)中文版,人民邮电出版社,英文原版书名:C Primer Plus。作者:普拉达 (Stephen Prata) 著,姜佑 译。《C Primer Plus(第6版)中文版》经久不衰的C语言畅销经典教程,针对C11标准进行全面更新,详细讲解了C语言的基本概念和编程技巧。 全书共17章。第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入输出、结构、位操作等。第16章、17章介绍C预处理器、C库和高级数据表示。 本书以完整的程序为例,讲解C语言的知识要点和注意事项。每章末设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。附录给出了各章复习题的参考答案和丰富的参考资料。 《C Primer Plus(第6版)中文版》可作为C语言的教材,适用于需要系统学习C语言的初学者,也适用于巩固C语言知识或希望进一步提高编程技术的程序员。 C Primer Plus(第6版)图书目录 第1章初识C语言1 1.1C语言的起源1 1.2选择C语言的理由1 1.2.1设计特性1 1.2.2高效性1 1.2.3可移植性2 1.2.4强大而灵活3 1.2.5面向程序员3 1.2.6缺点3 1.3C语言的应用范围3 1.4计算机能做什么4 1.5高级计算机语言和编译器5 1.6语言标准6 1.6.1第1个ANSI/ISOC标准6 1.6.2C99标准6 1.6.3C11标准7 1.7使用C语言的7个步骤7 1.7.1第1步:定义程序的目标8 1.7.2第2步:设计程序8 1.7.3第3步:编写代码8 1.7.4第4步:编译8 1.7.5第5步:运行程序9 1.7.6第6步:测试和调试程序9 1.7.7第7步:维护和修改代码9 1.7.8说明9 1.8编程机制10 1.8.1目标代码文件、可执行文件和库10 1.8.2UNIX系统11 1.8.3GNU编译器集合和LLVM项目13 1.8.4Linux系统13 1.8.5PC的命令行编译器14 1.8.6集成开发环境(Windows)14 1.8.7Windows/Linux15 1.8.8Macintosh中的C15 1.9本书的组织结构15 1.10本书的约定16 1.10.1字体16 1.10.2程序输出16 1.10.3特殊元素17 1.11本章小结17 1.12复习题18 1.13编程练习18 第2章C语言概述19 2.1简单的C程序示例19 2.2示例解释20 2.2.1第1遍:快速概要21 2.2.2第2遍:程序细节21 2.3简单程序的结构28 2.4提高程序可读性的技巧28 2.5进一步使用C29 2.5.1程序说明30 2.5.2多条声明30 2.5.3乘法30 2.5.4打印多个值30 2.6多个函数30 2.7调试程序32 2.7.1语法错误32 2.7.2语义错误33 2.7.3程序状态34 2.8关键字和保留标识符34 2.9关键概念35 2.10本章小结35 2.11复习题36 2.12编程练习37 第3章数据和C39 3.1示例程序39 3.2变量与常量数据42 3.3数据:数据类型关键字42 3.3.1整数和浮点数43 3.3.2整数43 3.3.3浮点数43 3.4C语言基本数据类型44 3.4.1int类型44 3.4.2其他整数类型47 3.4.3使用字符:char类型50 3.4.4_Bool类型54 3.4.5可移植类型:stdint.h和inttypes.h55 3.4.6float、double和longdouble56 3.4.7复数和虚数类型60 3.4.8其他类型60 3.4.9类型大小62 3.5使用数据类型63 3.6参数和陷阱63 3.7转义序列示例64 3.7.1程序运行情况65 3.7.2刷新输出65 3.8关键概念66 3.9本章小结66 3.10复习题67 3.11编程练习68 第4章字符串和格式化输入/输出71 4.1前导程序71 4.2字符串简介72 4.2.1char类型数组和null字符72 4.2.2使用字符串73 4.2.3strlen()函数74 4.3常量和C预处理器76 4.3.1const限定符78 4.3.2明示常量78 4.4printf()和scanf()80 4.4.1printf()函数80 4.4.2使用printf()81 4.4.3printf()的转换说明修饰符83 4.4.4转换说明的意义87 4.4.5使用scanf()92 4.4.6printf()和scanf()的*修饰符95 4.4.7printf()的用法提示97 4.5关键概念98 4.6本章小结98 4.7复习题99 4.8编程练习100 第5章运算符、表达式和语句103 5.1循环简介103 5.2基本运算符105 5.2.1赋值运算符:=105 5.2.2加法运算符:+107 5.2.3减法运算符:—107 5.2.4符号运算符:—和+107 5.2.5乘法运算符:*108 5.2.6除法运算符:/110 5.2.7运算符优先级110 5.2.8优先级和求值顺序112 5.3其他运算符113 5.3.1sizeof运算符和size_t类型113 5.3.2求模运算符:4 5.3.3递增运算符:++115 5.3.4递减运算符:——118 5.3.5优先级118 5.3.6不要自作聪明119 5.4表达式和语句120 5.4.1表达式120 5.4.2语句120 5.4.3复合语句(块)123 5.5类型转换124 5.6带参数的函数127 5.7示例程序129 5.8关键概念130 5.9本章小结130 5.10复习题131 5.11编程练习134 第6章C控制语句:循环137 第7章C控制语句:分支和跳转177 第8章字符输入/输出和输入验证217 第9章函数243 第10章数组和指针277 第11章字符串和字符串函数321 第12章存储类别、链接和内存管理373 第13章文件输入/输出413 第14章结构和其他数据形式439 第15章位操作493 第16章C预处理器和C库521 第17章高级数据表示567 附录A复习题答案633 附录B参考资料665

2018-03-19

OpenGL编程指南(第8版 PDF) 中文版 高清晰 最新 完整版 (带目录书签)

OpenGL编程指南 第8版 高清 中文 完整版,PDF格式的。是目前网络上最清晰的完整版本。这本书是学习OpenGl的必备资料,非常好的书。 由Khronos小组编写的官方指南,OpenGL领域的权威著作,素有“OpenGL红宝书”美誉。 内容全面而深入,用清晰易懂的语言阐释OpenGL的各种技术细节、方法和最佳实践,帮助程序员走上OpenGL专家之路。 【目录如下】 推荐语 译者序 前 言 第1章 OpenGL概述 1 1.1 什么是OpenGL 1 1.2 初识OpenGL程序 2 1.3 OpenGL语法 6 1.4 OpenGL渲染管线 7 1.4.1 准备向OpenGL传输数据 8 1.4.2 将数据传输到OpenGL 8 1.4.3 顶点着色 9 1.4.4 细分着色 9 1.4.5 几何着色 9 1.4.6  图元装配 9 1.4.7 剪切 9 1.4.8 光栅化 9 1.4.9 片元着色 10 1.4.10 逐片元的操作 10 1.5 第一个程序:深入分析 10 1.5.1 进入main()函数 10 1.5.2 OpenGL的初始化过程 12 1.5.3 第一次使用OpenGL进行渲染 21 第2章 着色器基础 25 2.1 着色器与OpenGL 26 2.2 OpenGL的可编程管线 26 2.3 OpenGL着色语言概述 28 2.3.1 使用GLSL构建着色器 28 2.3.2 存储限制符 34 2.3.3 语句 37 2.3.4 计算的不变性 41 2.3.5 着色器的预处理器 43 2.3.6 编译器的控制 45 2.3.7 全局着色器编译选项 45 2.4 数据块接口 46 2.4.1 uniform块 46 2.4.2 指定着色器中的uniform块 47 2.4.3 从应用程序中访问uniform块 48 2.4.4 buffer块 53 2.4.5 in/out块 54 2.5 着色器的编译 54 2.5.1 我们的LoadShaders()函数 58 2.6 着色器子程序 58 2.6.1 GLSL的子程序设置 59 2.6.2 选择着色器子程序 60 2.7 独立的着色器对象 62 第3章 OpenGL绘制方式 64 3.1 OpenGL图元 64 3.1.1 点 65 3.1.2 线、条带与循环线 66 3.1.3 三角形、条带与扇面 66 3.2 OpenGL缓存数据 69 3.2.1 创建与分配缓存 69 3.2.2 向缓存输入和输出数据 71 3.2.3 访问缓存的内容 75 3.2.4 丢弃缓存数据 80 3.3 顶点规范 80 3.3.1 深入讨论VertexAttrib-Pointer 81 3.3.2  静态顶点属性的规范 84 3.4 OpenGL的绘制命令 86 3.4.1 图元的重启动 92 3.5 多实例渲染 96 3.5.1 多实例的顶点属性 97 3.5.2 在着色器中使用实例计数器 102 3.5.3 多实例方法的回顾 104 第4章 颜色、像素和帧缓存 105 4.1 基本颜色理论 106 4.2 缓存及其用途 107 4.2.1 缓存的清除 109 4.2.2 缓存的掩码 110 4.3 颜色与OpenGL 110 4.3.1 颜色的表达与OpenGL 111 4.3.2 顶点颜色 112 4.3.3 光栅化 114 4.4 多重采样 115 4.4.1 采样着色 116 4.5 片元的测试与操作 117 4.5.1 剪切测试 118 4.5.2 多重采样的片元操作 118 4.5.3 模板测试 119 4.5.4 模板的例子 120 4.5.5 深度测试 122 4.5.6 融混 124 4.5.7 融混参数 125 4.5.8 控制融混的参数 125 4.5.9 融混方程 127 4.5.10 抖动 128 4.5.11 逻辑操作 128 4.5.12 遮挡查询 129 4.5.13 条件渲染 132 4.6 逐图元的反走样 133 4.6.1 线段的反走样 134 4.6.2 多边形的反走样 135 4.7 帧缓存对象 135 4.7.1 渲染缓存 137 4.7.2 创建渲染缓存的存储空间 138 4.7.3 帧缓存附件 140 4.7.4 帧缓存的完整性 142 4.7.5 帧缓存的无效化 144 4.8 多重渲染缓存的同步写入 145 4.8.1 选择颜色缓存来进行读写操作 146 4.8.2 双源融混 148 4.9 像素数据的读取和拷贝 150 4.10 拷贝像素矩形 152 第5章 视口变换、剪切与反馈 153 5.1 观察视图 154 5.1.1 视图模型 154 5.1.2 相机模型 154 5.1.3 正交视图模型 157 5.2 用户变换 158 5.2.1 矩阵乘法的回顾 159 5.2.2 齐次坐标 161 5.2.3 线性变换与矩阵 163 5.2.4  法线变换 173 5.2.5 OpenGL矩阵 174 5.3 OpenGL变换 177 5.3.1 高级技巧:用户剪切 178 5.4 transform feedback 179 5.4.1 transform feedback对象 180 5.4.2 transform feedback缓存 181 5.4.3 配置transform feedback的变量 183 5.4.4 transform feedback的启动和停止 187 5.4.5 transform feedback的示例:粒子系统 189 第6章 纹理 195 6.1 纹理映射 196 6.2 基本纹理类型 197 6.3 创建和初始化纹理 198 6.3.1 纹理格式 202 6.4 代理纹理 207 6.5 设置纹理数据 208 6.5.1 显式设置纹理数据 208 6.5.2 使用Pixel Unpack缓存 210 6.5.3 从帧缓存拷贝数据 211 6.5.4 从文件加载图像 212 6.5.5 查询纹理数据 215 6.5.6 纹理数据布局 215 6.6 采样器对象 219 6.6.1 采样器参数 220 6.7 使用纹理 221 6.7.1 纹理坐标 223 6.7.2 组织纹理数据 226 6.7.3 使用多重纹理 227 6.8 复杂纹理类型 229 6.8.1 3维纹理 229 6.8.2 数组纹理 231 6.8.3 立方体映射纹理 231 6.8.4 阴影采样器 237 6.8.5 深度模板纹理 238 6.8.6 缓存纹理 238 6.9 纹理视图 240 6.10 压缩纹理 243 6.11 滤波 245 6.11.1 线性滤波 245 6.11.2 使用和生成mipmap 247 6.11.3 计算mipmap级别 251 6.11.4 mipmap细节层次控制 252 6.12 高级纹理查询函数 252 6.12.1 显式细节层次 252 6.12.2 显式梯度设置 253 6.12.3 偏移后的纹理获取 253 6.12.4 投影纹理 254 6.12.5 着色器中的纹理查询 254 6.12.6 收集纹素 256 6.12.7 合并特殊函数 256 6.13 点精灵 257 6.13.1 带纹理的点精灵 257 6.13.2 控制点的外观 259 6.14 渲染到纹理贴图 260 6.14.1 丢弃已渲染数据 263 6.15 本章总结 264 6.15.1 纹理回顾 264 6.15.2 纹理的最好实践 265 第7章 光照与阴影 266 7.1 光照介绍 267 7.2 经典光照模型 267 7.2.1 不同光源类型的片元着色器 268 7.2.2 将计算移到顶点着色器 277 7.2.3 多个光源和材质 279 7.2.4 光照坐标系统 285 7.2.5 经典光照模型的局限 285 7.3 光照模型进阶 286 7.3.1 半球光照 286 7.3.2 基于图像的光照 289 7.3.3 球面光照 293 7.4 阴影映射 296 7.4.1 创建一张阴影贴图 297 7.4.2 使用阴影贴图 299 第8章 程序式纹理 303 8.1 程序式纹理 303 8.1.1 规则的花纹 305 8.1.2 玩具球 311 8.1.3 晶格 318 8.1.4 程序式着色方法的总结 319 8.2 凹凸贴图映射 319 8.2.1 应用程序设置 321 8.2.2 顶点着色器 323 8.2.3 片元着色器 324 8.2.4 法线贴图 326 8.3 程序式纹理的反走样 326 8.3.1 走样的来源 327 8.3.2 避免走样问题 328 8.3.3 提高分辨率 329 8.3.4 高频率的反走样 330 8.3.5 频率截断 337 8.3.6 程序式反走样的总结 339 8.4 噪声 339 8.4.1 噪声的定义 341 8.4.2 噪声纹理 345 8.4.3 权衡 348 8.4.4 一个简单的噪声着色器 349 8.4.5 湍流 351 8.4.6 大理石 353 8.4.7 花岗岩 353 8.4.8 木纹 354 8.4.9 噪声的总结 357 8.5 更多信息 357 第9章 细分着色器 359 9.1 细分着色器 359 9.2 细分面片 360 9.3 细分控制着色器 361 9.3.1 生成输出面片的顶点 362 9.3.2 细分控制着色器的变量 362 9.3.3 细分的控制 363 9.4 细分计算着色器 367 9.4.1 设置图元生成域 368 9.4.2 设置生成图元的面朝向 368 9.4.3 设置细分坐标的间隔 368 9.4.4 更多的细分计算着色器layout选项 368 9.4.5 设置顶点的位置 369 9.4.6 细分计算着色器的变量 369 9.5 细分实例:茶壶 370 9.5.1 处理面片输入顶点 370 9.5.2 计算茶壶的细分坐标 371 9.6 更多的细分技术 373 9.6.1 视口相关的细分 373 9.6.2 细分的共享边与裂缝 375 9.6.3 置换贴图映射 376 第10章 几何着色器 377 10.1 创建几何着色器 378 10.2 几何着色器的输入和输出 380 10.2.1 几何着色器的输入 380 10.2.2 特殊的几何着色器图元 383 10.2.3 几何着色器的输出 387 10.3 产生图元 389 10.3.1 几何体的裁减 389 10.3.2 几何体的扩充 390 10.4 transform feedback高级篇 394 10.4.1 多重输出流 395 10.4.2 图元查询 399 10.4.3 使用transform feedback的结果 400 10.5 几何着色器的多实例化 408 10.6 多视口与分层渲染 409 10.6.1 视口索引 409 10.6.2 分层渲染 414 10.7 本章小结 417 10.7.1 几何着色器回顾 417 10.7.2 几何着色器的经验谈 418 第11章 内存 420 11.1 使用纹理存储通用数据 420 11.1.1 将纹理绑定到图像单元 425 11.1.2 图像数据的读取和写入 427 11.2 着色器存储缓存对象 430 11.2.1 写入结构化数据 431 11.3 原子操作和同步 431 11.3.1 图像的原子操作 431 11.3.2 缓存的原子操作 439 11.3.3 同步对象 440 11.3.4 图像限定符和屏障 444 11.3.5 高性能的原子计数器 452 11.4 示例 455 11.4.1 顺序无关的透明 455 第12章 计算着色器 466 12.1 概述 466 12.2 工作组及其执行 467 12.2.1 知道工作组的位置 471 12.3 通信与同步 472 12.3.1 通信 473 12.3.2 同步 474 12.4 示例 475 12.4.1 物理模拟 476 12.4.2 图像处理 481 12.5 本章总结 485 12.5.1 计算着色器回顾 485 12.5.2 计算着色器的最佳实践 485 附录A GLUT基础知识 487 附录B OpenGL ES与WebGL 493 附录C 内置GLSL变量与函数 504 附录D 状态变量 552 附录E 齐次坐标与变换矩阵 591 附录F OpenGL与窗口系统 596 附录G 纹理、帧缓存与渲染缓存的浮点格式 612 附录H OpenGL程序的调试与优化 618 附录I 缓存对象的布局 632 术语表 635

2018-02-09

EasyHook 函数钩子 最好的完整稳定的钩子Demo程序(VS2010 C++ 版本)

目前最好的EasyHook的完整Demo程序,包括了Hook.dll动态库和Inject.exe注入程序。 Hook.dll动态库封装了一套稳定的下钩子的机制,以后对函数下钩子,只需要填下数组表格就能实现了,极大的方便了今后的使用。 Inject.exe是用MFC写的界面程序,只需要在界面上输入进程ID就能正确的HOOK上相应的进程,操作起来非常的简便。 这个Demo的代码风格也非常的好,用VS2010成功稳定编译通过,非常值得下载使用。 部分代码片段摘录如下: //【Inject.exe注入程序的代码片段】 void CInjectHelperDlg::OnBnClickedButtonInjectDllProcessId() { ////////////////////////////////////////////////////////////////////////// //【得到进程ID值】 UINT nProcessID = 0; if (!GetProcessID(nProcessID)) { TRACE(_T("%s GetProcessID 失败"), __FUNCTION__); return; } ////////////////////////////////////////////////////////////////////////// //【得到DLL完整路径】 CString strPathDLL; if (!GetDllFilePath(strPathDLL)) { TRACE(_T("%s GetDllFilePath 失败"), __FUNCTION__); return; } ////////////////////////////////////////////////////////////////////////// //【注入DLL】 NTSTATUS ntStatus = RhInjectLibrary(nProcessID, 0, EASYHOOK_INJECT_DEFAULT, strPathDLL.GetBuffer(0), NULL, NULL, 0); if (!ShowStatusInfo(ntStatus)) { TRACE(_T("%s ShowStatusInfo 失败"), __FUNCTION__); return; } } //【Hook.dll动态库的代码片段】 extern "C" __declspec(dllexport) void __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* InRemoteInfo) { if (!DylibMain()) { TRACE(_T("%s DylibMain 失败"), __FUNCTION__); return; } } FUNCTIONOLDNEW_FRMOSYMBOL array_stFUNCTIONOLDNEW_FRMOSYMBOL[]= { {_T("kernel32"), "CreateFileW", (void*)CreateFileW_new}, {_T("kernel32"), "CreateFileA", (void*)CreateFileA_new}, {_T("kernel32"), "ReadFile", (void*)ReadFile_new} }; BOOL HookFunctionArrayBySymbol() { /////////////////////////////////////////////////////////////// int nPos = 0; do { /////////////////////////////// FUNCTIONOLDNEW_FRMOSYMBOL* stFunctionOldNew = &g_stFUNCTIONOLDNEW_FRMOSYMBOL[nPos]; if (NULL == stFunctionOldNew->strModuleName) { break; } /////////////////////////////// if (!HookFunctionBySymbol(stFunctionOldNew->strModuleName, stFunctionOldNew->strNameFunction, stFunctionOldNew->pFunction_New)) { TRACE(_T("%s HookFunctionBySymbol 失败"), __FUNCTION__); return FALSE; } } while(++nPos); /////////////////////////////////////////////////////////////// return TRUE; } HANDLE WINAPI CreateFileW_new( PWCHAR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ) { TRACE(_T("CreateFileW_new. lpFileName = %s"), lpFileName); return CreateFileW( lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); }

2018-01-19

《Android软件安全与逆向分析》最新 完整版 清晰版 带书签 (PDF)

《Android软件安全与逆向分析》由浅入深、循序渐进地讲解了Android系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android软件、如何动态调试Android 软件、Android 软件的破解与反破解技术的探讨,以及对典型Android病毒的全面剖析。 作者简介:丰生强(网名非虫),Android软件安全专家,看雪论坛Android安全版版主,安卓巴士开发交流版版主。 目录 第1章  Android程序分析环境搭建 1.1  Windows分析环境搭建 1.1.1  安装JDK 1.1.2  安装Android SDK 1.1.3  安装Android NDK 1.1.4  Eclipse集成开发环境 1.1.5  安装CDT、ADT插件 1.1.6  创建Android Virtual Device 1.1.7  使用到的工具 1.2  Linux分析环境搭建 1.2.1  本书的Linux环境 1.2.2  安装JDK 1.2.3  在Ubuntu上安装Android SDK 1.2.4  在Ubuntu上安装Android NDK 1.2.5  在Ubuntu上安装Eclipse集成开发环境 1.2.6  在Ubuntu上安装CDT、ADT插件 1.2.7  创建Android Virtual Device 1.2.8  使用到的工具 1.3  本章小结 第2章  如何分析Android程序 2.1  编写第一个Android程序 2.1.1  使用Eclipse创建Android工程 2.1.2  编译生成APK文件 2.2  破解第一个程序 2.2.1  如何动手? 2.2.2  反编译APK文件 2.2.3  分析APK文件 2.2.4  修改Smali文件代码 2.2.5  重新编译APK文件并签名 2.2.6  安装测试 2.3  本章小结 第3章  进入Android Dalvik虚拟机 3.1  Dalvik虚拟机的特点--掌握Android程序的运行原理 3.1.1  Dalvik虚拟机概述 3.1.2  Dalvik虚拟机与Java虚拟机的区别 3.1.3  Dalvik虚拟机是如何执行程序的 3.1.4  关于Dalvik虚拟机JIT(即时编译) 3.2  Dalvik汇编语言基础为分析Android程序做准备 3.2.1  Dalvik指令格式 3.2.2  DEX文件反汇编工具 3.2.3  了解Dalvik寄存器 3.2.4  两种不同的寄存器表示方法--v命名法与p命名法 3.2.5  Dalvik字节码的类型、方法与字段表示方法 3.3  Dalvik指令集 3.3.1  指令特点 3.3.2  空操作指令 3.3.3  数据操作指令 3.3.4  返回指令 3.3.5  数据定义指令 3.3.6  锁指令 3.3.7  实例操作指令 3.3.8  数组操作指令 3.3.9  异常指令 3.3.10  跳转指令 3.3.11  比较指令 3.3.12  字段操作指令 3.3.13  方法调用指令 3.3.14  数据转换指令 3.3.15  数据运算指令 3.4  Dalvik指令集练习--写一个Dalvik版的Hello World 3.4.1  编写smali文件 3.4.2  编译smali文件 3.4.3  测试运行 3.5  本章小结 第4章  Android可执行文件 4.1  Android程序的生成步骤 4.2  Android程序的安装流程 4.3  dex文件格式 4.3.1  dex文件中的数据结构 4.3.2  dex文件整体结构 4.3.3  dex文件结构分析 4.4  odex文件格式 4.4.1  如何生成odex文件 4.4.2  odex文件整体结构 4.4.3  odex文件结构分析 4.5  dex文件的验证与优化工具dexopt的工作过程 4.6  Android应用程序另类破解方法 4.7  本章小结 第5章  静态分析Android程序 5.1  什么是静态分析 5.2  快速定位Android程序的关键代码 5.2.1  反编译apk程序 5.2.2  程序的主Activity 5.2.3  需重点关注的Application类 5.2.4  如何定位关键代码--六种方法 5.3  smali文件格式 5.4  Android程序中的类 5.4.1  内部类 5.4.2  监听器 5.4.3  注解类 5.4.4  自动生成的类 5.5  阅读反编译的smali代码 5.5.1  循环语句 5.5.2  switch分支语句 5.5.3  try/catch语句 5.6  使用IDA Pro静态分析Android程序 5.6.1  IDA Pro对Android的支持 5.6.2  如何操作 5.6.3  定位关键代码--使用IDA Pro进行破解的实例 5.7  恶意软件分析工具包--Androguard 5.7.1  Androguard的安装与配置 5.7.2  Androguard的使用方法 5.7.3  使用Androguard配合Gephi进行静态分析 5.7.4  使用androlyze.py进行静态分析 5.8  其他静态分析工具 5.9  阅读反编译的Java代码 5.9.1  使用dex2jar生成jar文件 5.9.2  使用jd-gui查看jar文件的源码 5.10  集成分析环境--santoku 5.11  本章小结 第6章  基于Android的ARM汇编语言基础--逆向原生! 6.1  Android与ARM处理器 6.1.1  ARM处理器架构概述 6.1.2  ARM处理器家族 6.1.3  Android支持的处理器架构 6.2  原生程序与ARM汇编语言--逆向你的原生Hello ARM 6.2.1  原生程序逆向初步 6.2.2  原生程序的生成过程 6.2.3  必须了解的ARM知识 6.3  ARM汇编语言程序结构 6.3.1  完整的ARM汇编程序 6.3.2  处理器架构定义 6.3.3  段定义 6.3.4  注释与标号 6.3.5  汇编器指令 6.3.6  子程序与参数传递 6.4  ARM处理器寻址方式 6.4.1  立即寻址 6.4.2  寄存器寻址 6.4.3  寄存器移位寻址 6.4.4  寄存器间接寻址 6.4.5  基址寻址 6.4.6  多寄存器寻址 6.4.7  堆栈寻址 6.4.8  块拷贝寻址 6.4.9  相对寻址 6.5  ARM与Thumb指令集 6.5.1  指令格式 6.5.2  跳转指令 6.5.3  存储器访问指令 6.5.4  数据处理指令 6.5.5  其他指令 6.6  用于多媒体编程与浮点计算的NEON与VFP指令集 6.7  本章小结 第7章  Android NDK程序逆向分析 7.1  Android中的原生程序 7.1.1  编写一个例子程序 7.1.2  如何编译原生程序 7.2  原生程序的启动流程分析 7.2.1  原生程序的入口函数 7.2.2  main函数究竟何时被执行 7.3  原生文件格式 7.4  原生C程序逆向分析 7.4.1  原生程序的分析方法 7.4.2  for循环语句反汇编代码的特点 7.4.3  if...else分支语句反汇编代码的特点 7.4.4  while循环语句反汇编代码的特点 7.4.5  switch分支语句反汇编代码的特点 7.4.6  原生程序的编译时优化 7.5  原生C++程序逆向分析 7.5.1  C++类的逆向 7.5.2  Android NDK对C++特性的支持 7.5.3  静态链接STL与动态链接STL的代码区别 7.6  Android NDK JNI API逆向分析 7.6.1  Android NDK提供了哪些函数 7.6.2  如何静态分析Android NDK程序 7.7  本章小结 第8章  动态调试Android程序 8.1  Android动态调试支持 8.2  DDMS的使用 8.2.1  如何启动DDMS 8.2.2  使用LogCat查看调试信息 8.3  定位关键代码 8.3.1  代码注入法--让程序自己吐出注册码 8.3.2  栈跟踪法 8.3.3  Method Profiling 8.4  使用AndBug调试Android程序 8.4.1  安装AndBug 8.4.2  使用AndBug 8.5  使用IDA Pro调试Android原生程序 8.5.1  调试Android原生程序 8.5.2  调试Android原生动态链接库 8.6  使用gdb调试Android原生程序 8.6.1  编译gdb与gdbserver 8.6.2  如何调试 8.7  本章小结 第9章  Android软件的破解技术 9.1  试用版软件 9.1.1  试用版软件的种类 9.1.2  实例破解--针对授权KEY方式的破解 9.2  序列号保护 9.3  网络验证 9.3.1  网络验证保护思路 9.3.2  实例破解--针对网络验证方式的破解 9.4  In-app Billing(应用内付费) 9.4.1  In-app Billing原理 9.4.2  In-app Billing破解方法 9.5  Google Play License保护 9.5.1  Google Play License保护机制 9.5.2  实例破解--针对Google Play License方式的破解 9.6  重启验证 9.6.1  重启验证保护思路 9.6.2  实例破解--针对重启验证方式的破解 9.7  如何破解其他类型的Android程序 9.7.1  Mono for Android开发的程序及其破解方法 9.7.2  Qt for Android开发的程序及其破解方法 9.8  本章小结 第10章  Android程序的反破解技术 10.1  对抗反编译 10.1.1  如何对抗反编译工具 10.1.2  对抗dex2jar 10.2  对抗静态分析 10.2.1  代码混淆技术 10.2.2  NDK保护 10.2.3  外壳保护 10.3  对抗动态调试 10.3.1  检测调试器 10.3.2  检测模拟器 10.4  防止重编译 10.4.1  检查签名 10.4.2  校验保护 10.5  本章小结 第11章  Android系统攻击与防范 11.1  Android系统安全概述 11.2  手机ROOT带来的危害 11.2.1  为什么要ROOT手机 11.2.2  手机ROOT后带来的安全隐患 11.2.3  Android手机ROOT原理 11.3  Android权限攻击 11.3.1  Android权限检查机制 11.3.2  串谋权限攻击 11.3.3  权限攻击检测 11.4  Android组件安全 11.4.1  Activity安全及Activity劫持演示 11.4.2  Broadcast Receiver 安全 11.4.3  Service安全 11.4.4  Content Provider安全 11.5  数据安全 11.5.1  外部存储安全 11.5.2  内部存储安全 11.5.3  数据通信安全 11.6  ROM安全 11.6.1  ROM的种类 11.6.2  ROM的定制过程 11.6.3  定制ROM的安全隐患 11.6.4  如何防范 11.7  本章小结 第12章  DroidKongFu变种病毒实例分析 12.1  DroidKongFu病毒介绍 12.2  配置病毒分析环境 12.3  病毒执行状态分析 12.3.1  使用APIMonitor初步分析 12.3.2  使用DroidBox动态分析 12.3.3  其他动态分析工具 12.4  病毒代码逆向分析 12.4.1  Java层启动代码分析 12.4.2  Native层启动代码分析 12.4.3  Native层病毒核心分析 12.5  DroidKongFu病毒框架总结 12.6  病毒防治 12.7  本章小结

2018-01-10

IOS应用逆向工程(第2版) 最新版 完整版 高清(PDF)

最好的IOS平台逆向技术学习资料。 内容简介 你是否曾因应用上线的第一天即遭破解而无奈苦恼,想要加以防范,却又束手无策? 你是否曾为某一应用深深折服,想要借鉴学习,却又无从下手? 你是否已不满足于public API,想要进军Cydia开发,却又求学无门? 你是否已产生“不识Apple真面目,只缘身在App Store中”的危机感,想要通过阅读来一窥这冰山一角外的整个北极,却又找不到合适的书? 你是否已经因无法跨越开发路上的重重障碍而断了研究iOS逆向工程的念头?Are you a quitter?看完本书,相信你会有全新的感受! 全球第一本讲解iOS8应用逆向工程的实战手册,作者毫无保留地分享了数年来在iOS逆向工程领域的经验。 内容系统深入,逻辑紧密,实战性强,从iOS系统架构等理论出发,以多个实例贯穿全书,阐述class-dump、Theos、Cycript、Reveal、IDA、LLDB等常用工具的使用,通俗易懂。 总结提炼出一套从UI观察切入代码分析的iOS应用逆向工程方法论,授人以渔。 作者简介 沙梓社,iOS越狱社区骨灰级活跃份子,思路开阔思想传统,对苹果的研究痴迷到连女朋友都没有的地步。作品见诸于Cydia,有SMSNinja、LowPowerBanner、DimInCall等。 吴航,十余年程序开发经验的资深码农,历经方正、NEC、Juniper等国内国外知名IT企业,2011年进入iOS领域,专注于iOS app/逆向等方向的开发,主要作品有安全管家、知乎月刊HD等。

2018-01-02

空空如也

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

TA关注的人

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