├── 1.编译与反编译.md └── readme.md /1.编译与反编译.md: -------------------------------------------------------------------------------- 1 | 2 | 一 编译 3 | 4 | 5 | 1.编译器 6 | 7 | 1.1 GCC/Clang/LLVM 8 | 9 | 1.2 ASAN/libFuzzer 10 | 11 | 1.3 AFL 12 | 13 | 2.抽象语法树(AST) 14 | 15 | 2.1 原理 16 | 17 | 2.2 代码转换 18 | 19 | 2.3 代码混淆 20 | 21 | 2.4 代码分析 22 | 23 | 3.编译 24 | 25 | 3.1 汇编指令与OpCode 26 | 27 | 3.2 代码优化 28 | 29 | 4.链接 30 | 31 | 4.1 调试符号 32 | 33 | 4.2 多个文件链接 34 | 35 | 4.3 extern 关键字 36 | 37 | 4.4 .lib 和.dll 38 | 39 | 5.生成 40 | 41 | 6.代码路径 42 | 43 | 6.1 代码路径怎么走 44 | 45 | 6.2 符号执行 46 | 47 | 6.3 代码覆盖率 48 | 49 | 7.为什么要读源码 50 | 51 | 52 | 二 静态语言与动态语言 53 | 54 | 55 | 1.区别 56 | 57 | 1.1 简述 58 | 59 | 1.2 堆,栈与线程执行上下文 60 | 61 | 1.3 OpCode Intercepter 62 | 63 | 1.4 Python 代码加密示例 64 | 65 | 2.Eval /Evil 66 | 67 | 2.1 静态语言特有的Eval() 68 | 69 | 2.2 静态语言的远程代码执行 70 | 71 | 2.3 动态语言的远程代码执行 72 | 73 | 2.4 innerHtml 中的eval() 与XSS 74 | 75 | 3.插件的原理 76 | 77 | 3.1 Python 动态加载 78 | 79 | 3.2 PHP 解析器的插件模型 80 | 81 | 4.数据类型 82 | 83 | 4.1 char/short/long/float 84 | 85 | 4.2 struct 86 | 87 | 4.3 long/str/list 88 | 89 | 4.4 回调函数 90 | 91 | 4.4.1 回调函数在C语言 92 | 93 | 4.4.2 回调函数在Python 94 | 95 | 4.5 二进制漏洞 96 | 97 | 4.5.1 OOB 98 | 99 | 4.5.2 type confuse 100 | 101 | 4.5.3 任意地址读写 102 | 103 | 5.解析器逃逸 104 | 105 | 5.1 pwn2own 106 | 107 | 5.2 Crack in Chakra Core 108 | 109 | 5.3 从DEP 到ASLR 再到CFG 再到!@*$^!#$ 110 | 111 | 漏洞利用成本 112 | 113 | 6.沙盒检测 114 | 115 | 6.1 PHP Eval() 监控 116 | 117 | 6.2 监控敏感API 118 | 119 | 6.3 系统沙盒 120 | 121 | 6.3.1 限制 122 | 123 | 6.4 使用低权限用户执行 124 | 125 | 6.4.1 R/W/E 126 | 127 | 6.4.2 在线代码执行站点 128 | 129 | 130 | 三 反编译 131 | 132 | 1.可执行文件格式 133 | 134 | 1.1 PE/ELF/JAR/PYC 135 | 136 | 1.2 PE 表结构与PyPE 137 | 138 | 1.3 调皮的PYC 结构 139 | 140 | 1.4 好玩的PyDasm 141 | 142 | 2.程序加载过程 143 | 144 | 3.汇编指令与OpCode 145 | 146 | 3.1 反汇编原理 147 | 148 | 3.2 反编译原理 149 | 150 | 3.3 OpCode 151 | 152 | 3.4 PHP 加密模块IotCude 的问题 153 | 154 | 4.Hook 与Patch 155 | 156 | 4.1 Hook 原理 157 | 158 | 4.2 Hook in IAT 159 | 160 | 4.3 Hook in Bytecode 161 | 162 | 4.4 Hot-Patch in Python 163 | 164 | 4.5 Hook 在应用程序监控中的应用 165 | 166 | 5.反编译实践(Pydbg,Pydasm,Snowman,IDA,Angr) 167 | 168 | 5.1 Pydbg 169 | 170 | 6.为什么要反编译 171 | 172 | 173 | 四 混淆与加壳 174 | 175 | 176 | 1.反反编译 177 | 178 | 1.1 Debug/Relaese 版的区别 179 | 180 | 1.2 等价指令 181 | 182 | 1.3 壳 183 | 184 | 2.调试 185 | 186 | 2.1 IsDebugging() 与反IsDebugging() 187 | 188 | 2.2 PEB 调试位字段与反PEB 调试位字段 189 | 190 | 2.3 虚拟机检测 191 | 192 | 2.4 ReadProcessMemory() 的战争 193 | 194 | 2.5 VirtualProtect() 195 | 196 | 2.6 重定向表 197 | 198 | 199 | 3.简单的加密壳实现 200 | 201 | 3.1 详解PE区段 202 | 203 | 3.2 加密代码 204 | 205 | 3.3 重构OEP 206 | 207 | 3.4 隐藏解密代码到PE头 208 | 209 | 4.ESP 定律与UPX 脱壳 210 | 211 | 5.免杀 212 | 213 | 5.1 静态分析 214 | 215 | 5.2 动态分析 216 | 217 | 6.动态语言的灵活性 218 | 219 | 6.1 变换 220 | 221 | 6.2 深入理解PHP WebShell 的混淆 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | 2 | ### Think in Security 3 | 4 | 分享我在安全路上的思考与点滴,希望它们能够帮助有需要的同学学习安全相关的知识 5 | 6 | 7 | ### 安全学习路线 8 | 9 | 从浅到深分享一些安全学习书籍 10 | 11 | 12 | #### 二进制学习路线 13 | 14 | **基础篇** 15 | 16 | 1.[加密与解密](https://e.jd.com/30093117.html) 17 | 18 | 为什么要选择这本书作为二进制入门的第一本书呢?这本书会从调试到逆向,从程序结构到Windows 系统结构做了基本的介绍.能够对PE 文件格式,调试与反调试,逆向,程序异常处理,软件壳,操作系统都有所理解. 19 | 20 | 2.[C++反汇编与逆向分析技术揭秘](https://item.jd.com/10860286.html) 21 | 22 | 开始学习二进制时,往往在看汇编的时候很吃力,没有想明白为什么会出现这样的汇编结构.这本书从C++ 出发,详细地介绍了从C++ 语句到汇编每一个语法结构对应. 23 | 24 | 3.[逆向工程核心原理](http://item.jd.com/11456821.html?utm_source=baidu&utm_medium=cpc&utm_campaign=&utm_term=baidu_347158791_0_s6660545e23ae77ab50.39091414) 25 | 26 | 结合前两本书的知识来看这本书,更加深入地去了解操作系统和程序结构.书里面有很多实例,对以后做安全工具和写木马都很有帮助. 27 | 28 | 29 | **进阶篇** 30 | 31 | 4.[Visual C++黑客编程揭秘与防范](https://item.jd.com/10063508.html) 32 | 33 | 这本书是我8 年前看的,但是书里面的一些知识到现在也还没有过时.这本书结合系统API 与源码向大家讲解怎么样写各种类型的木马(这本书里面会介绍到很多有趣的Windows API ).结合前面两本书的基础来看这本书,对于一些未知的EXE 和DLL 里面实现的原理都可以做进一步的探索,找到调用接口去做更多有趣的事情. 34 | 35 | 5.[恶意代码分析实战](https://item.jd.com/11447427.html) 36 | 37 | 未知攻,焉知防.看完上面的怎么写木马之后,就要从反病毒的角度来分析别人的恶意软件.这本书会涉及到恶意软件和病毒分析对抗的细节,让读者们切身感受到在代码层面上人与人的对抗. 38 | 39 | 6.[漏洞战争:软件漏洞分析精要](https://item.jd.com/11983614.html) 40 | 41 | 上面那本书提到了漏洞利用,但是漏洞具体是什么呢?泉哥将会告诉你答案.本书结合大量实例,向介绍的是二进制漏洞的原理和利用方式. 42 | 43 | 7.[Windows内核安全与驱动开发](https://item.jd.com/11713158.html) 44 | 45 | 前面的书都是在应用层上的战争,那么现在需要更深一层,往内核去探索.这本书介绍了驱动和内核层的原理,结合一些驱动安全的例子,告诉读者内核层的安全工具的原理. 46 | 47 | 8.[软件调试:Software Debugging](http://item.jd.com/10066793.html) 48 | 49 | 从应用层到内核,我们已经了解到许多细节的东西.这本书帮助大家把所有零碎的东西都组合起来,窥探整一个Windows 系统的面貌. 50 | 51 | **推荐阅读(不分先后)** 52 | 53 | 9.[Android安全攻防权威指南](https://item.jd.com/11667772.html) 54 | 55 | 熟悉了一个平台之后,再去看看另一个平台上的攻防会发现有很多相似的地方.这本书介绍Android 56 | 57 | 10.[揭秘家用路由器0day漏洞挖掘技术](http://item.jd.com/11734639.html) 58 | 59 | 介绍硬件上的漏洞挖掘技术,拓展阅读 60 | 61 | 62 | #### WEB 学习路线 63 | 64 | **基础篇** 65 | 66 | 1.[Web安全深度剖析](http://item.jd.com/11673055.html) 67 | 68 | 本书深入浅出介绍WEB 安全的漏洞.理解这些漏洞原理和绕过对后面的学习很有帮助 69 | 70 | 2.[安全之路:Web渗透技术及实战案例解析](http://item.jd.com/11761713.html) 71 | 72 | 73 | 3.[代码审计:企业级Web代码安全架构](http://item.jd.com/11823406.html) 74 | 75 | 76 | 4.[Python 黑帽子:黑客与渗透测试编程之道](http://item.jd.com/11748995.html) 77 | 78 | 79 | 5.[Web前端黑客技术揭秘](http://item.jd.com/11181832.html) 80 | 81 | 82 | 83 | 6.[白帽子讲浏览器安全](https://item.jd.com/11885835.html) 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | --------------------------------------------------------------------------------