This commit is contained in:
firmianay 2018-06-02 14:52:30 +08:00
parent 7cf313ebec
commit bc2c306c73
9 changed files with 86 additions and 12 deletions

View File

@ -214,6 +214,10 @@ GitHub 地址https://github.com/firmianay/CTF-All-In-One
* [8.23 Evaluating the Effectiveness of Current Anti-ROP Defenses](doc/8.23_current_anti-rop.md)
* [8.24 How to Make ASLR Win the Clone Wars: Runtime Re-Randomization](doc/8.24_runtime_re-randomization.md)
* [8.25 (State of) The Art of War: Offensive Techniques in Binary Analysis](doc/8.25_offsensive_techniques.md)
* [8.26 Driller: Augmenting Fuzzing Through Selective Symbolic Execution](doc/8.26_driller_fuzzing.md)
* [8.27 Firmalice - Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware](doc/8.27_firmalice_bypass.md)
* [8.28 Cross-Architecture Bug Search in Binary Executables](doc/8.28_cross_arch_bug_search.md)
* [8.29 Dynamic Hooks: Hiding Control Flow Changes within Non-Control Data](doc/8.29_dynamic_hooks.md)
* [九、附录](doc/9_appendix.md)
* [9.1 更多 Linux 工具](doc/9.1_Linuxtools.md)
* [9.2 更多 Windows 工具](doc/9.2_wintools.md)

View File

@ -59,7 +59,7 @@ $ make -j4 && sudo make install
如果我们想要在编译程序时指定 libc可以像这样
```
$ gcc test.c -L/usr/local/glibc-2.23/lib -Wl,--rpath=/usr/local/glibc-2.23/lib -Wl,-I/usr/local/glibc-2.23/lib/ld-2.23.so
$ gcc -L/usr/local/glibc-2.23/lib -Wl,--rpath=/usr/local/glibc-2.23/lib -Wl,-I/usr/local/glibc-2.23/lib/ld-2.23.so test.c
$ ldd a.out
linux-vdso.so.1 (0x00007ffcc76b0000)
libc.so.6 => /usr/local/glibc-2.23/lib/libc.so.6 (0x00007f6abd578000)

View File

@ -6,17 +6,68 @@
## 快捷键
- F2在光标选定位置按 F2 键设置或取消断点。
- F4运行到光标选定位置处暂停。
- F7单步步入每次执行一条指令遇到 call 等子程序时进入其中。
- Shift+F7与 F7 相同,但当调试程序发生异常而中止时,调试器首先尝试步入
- F8单步步过每次执行一条指令遇到 call 等子程序时不进入其中。
- F9运行被调试软件继续运行直到遇到下一个断点。
- Ctrl+F2重新启动被调试程序。
- Ctrl+F9执行到返回在执行到一个 ret 指令时暂停,常用于从当前函数快速返回到上一个函数。
- Ctrl+G查看任意地址的数据。
- Alt+F9执行到用户代码可用于从系统部分快速返回到被调试程序部分。
- Alt+F5让 OllyDbg 窗口总在最前面。
- `Ctrl`+`F1`:打开与所选行内符号相关的 API 帮助文档。
- `F2`:在光标选定位置按 F2 键设置或取消断点。
- `Shift`+`F2`:在首个选择命令设置条件断点。
- `Ctrl`+`F2`:重新启动被调试程序。
- `F4`:运行到光标选定位置处暂停。
- `Shift`+`F4`:设置记录断点。
- `F5`:最大化当前窗口。
- `Ctrl`+`F5`:打开与首个选择的命令相对应的源文件。
- `Alt`+`F5`:让 OllyDbg 窗口总在最前面。
- `F6`:切换到下一个窗口。
- `Shift`+`F6`:切换到前一个窗口。
- `F7`:单步步入:每次执行一条指令,遇到 call 等子程序时进入其中。
- `Shift`+`F7`:与 F7 相同,但当被调试程序发生异常而中止时,调试器首先尝试步入被调试程序指定的异常处理。
- `Ctrl`+`F7`:自动步入,在所有的函数调用中一条一条地执行命令。
- `Alt`+`F7`:转到上一个找到的参考。
- `F8`:单步步过,每次执行一条指令,遇到 call 等子程序时不进入其中。
- `Shift`+`F8`:与 F8 相同,但当被调试程序发生异常而中止时,调试器首先尝试步过被调试程序指定的异常处理。
- `Ctrl`+`F8`:自动步过,一条一条执行命令,但不进入函数内部调用。
- `Alt`+`F8`:转到下一个找到的参考。
- `F9`:运行,被调试软件继续运行,直到遇到下一个断点。
- `Shift`+`F9`:与 F9 相同,但当被调试程序发生异常而中止时,调试器首先尝试执行被调试程序指定的异常处理。
- `Ctrl`+`F9`:执行到返回,在执行到一个 ret 指令时暂停,常用于从当前函数快速返回到上一个函数。
- `Alt`+`F9`:执行到用户代码,可用于从系统部分快速返回到被调试程序部分。
- `F10`:打开与当前窗口或面板相关的快捷菜单。
- `Ctrl`+`F11`Run 跟踪步入,一条一条执行命令,进入子函数调用,并把寄存器信息加入到 Run 跟踪的存储数据中。
- `F12`:停止执行,暂停所有线程。
- `Ctrl`+`F12`Run 跟踪步过,一条一条执行命令,不进入子函数调用,并把寄存器信息加入到 Run 跟踪的存储数据中。
- `Alt`+`F3`:关闭当前窗口。
- `Alt`+`B`:显示断点窗口。
- `Alt`+`C`:显示 CPU 窗口。
- `Alt`+`E`:显示模块列表。
- `Alt`+`K`:显示调用栈。
- `Alt`+`L`:显示日志窗口。
- `Alt`+`M`:显示内存窗口。
- `Alt`+`O`:显示选项对话框。
- `Alt`+`Backspace`:撤销对所选部分的修改。
- `Ctrl`+`A`:分析当前模块的代码段。
- `Ctrl`+`B`:开始二进制搜索。
- `Ctrl`+`E`:以十六进制格式编辑所选内容。
- `Ctrl`+`F`:开始命令搜索。
- `Ctrl`+`G`:转到某地址。
- `Ctrl`+`J`:列出所有的涉及到该位置的调用和跳转。
- `Ctrl`+`K`:查看与当前函数相关的调用树。
- `Ctrl`+`L`:搜索下一个。
- `Ctrl`+`N`:打开当前模块的名称列表。
- `Ctrl`+`O`:扫描对象文件。
- `Ctrl`+`P`:显示补丁窗口。
- `Ctrl`+`R`:搜索所选命令的参考。
- `Ctrl`+`S`:命令搜索。
- `Ctrl`+`T`打开“暂停Run跟踪”对话框。
- `Esc`:停止自动执行或跟踪。
- `Enter`:将选中的命令添加到命令历史,如果当前命令是一个跳转或者函数,则进入到目的地址。
- `Backspace`:如果分析器将代码误识为数据,可以将选中部分的自动分析信息移除。
- *:转到原始位置
- `Ctrl`+`*`:指定新的起始位置。
- `+`:如果 Run 跟踪没有激活,则根据历史命令跳到下一条运行过命令的地方;否则跳到 Run 跟踪的下一个记录。
- `Ctrl`+`+`:跳到前一个函数的开始处。
- `-`:如果 Run 跟踪没有激活,则根据历史命令跳到前一条运行过命令的地方;否则跳到 Run 跟踪的前一个记录。
- `Ctrl`+`-`:跳到下一个函数的开始处。
- `Space`:修改命令。
- `:`:添加标签。
- `;`:添加注释。
## 命令行插件

View File

@ -9,6 +9,7 @@
- [程序状态](#程序状态)
- [模拟管理器](#模拟管理器)
- [VEX IR 翻译器](#vex-ir-翻译)
- [扩展工具](#扩展工具)
- [CTF 实例](#ctf-实例)
- [参考资料](#参考资料)
@ -47,6 +48,8 @@ $ sudo python setup.py install
```
安装过程中可能会有一些奇怪的错误,可以到官方文档中查看。
另外 angr 还有一个 GUI 可以用,查看 [angr Management](https://github.com/angr/angr-management)。
## 使用方法
#### 快速入门
@ -783,6 +786,14 @@ t1
到这里 angr 的核心概念就介绍得差不多了,更多更详细的内容还是推荐查看官方教程和 API 文档。
## 扩展工具
由于 angr 强大的静态分析和符号执行能力,我们可以在 angr 之上开发其他的一些工:
- [angrop](https://github.com/salls/angrop)rop 链自动化生成器
- [Patcherex](https://github.com/shellphish/patcherex):二进制文件自动化 patch 引擎
- [Driller](https://github.com/shellphish/driller):用符号执行增强 AFL 的下一代 fuzzer
- [Rex](https://github.com/shellphish/rex):自动化漏洞利用引擎
## CTF 实例
查看章节 6.2.3、6.2.8。

View File

@ -0,0 +1 @@
# 8.26 Driller: Augmenting Fuzzing Through Selective Symbolic Execution

View File

@ -0,0 +1 @@
# 8.27 Firmalice - Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware

View File

@ -0,0 +1 @@
# 8.28 Cross-Architecture Bug Search in Binary Executables

View File

@ -0,0 +1 @@
# 8.29 Dynamic Hooks: Hiding Control Flow Changes within Non-Control Data

View File

@ -28,3 +28,7 @@
* [8.23 Evaluating the Effectiveness of Current Anti-ROP Defenses](8.23_current_anti-rop.md)
* [8.24 How to Make ASLR Win the Clone Wars: Runtime Re-Randomization](8.24_runtime_re-randomization.md)
* [8.25 (State of) The Art of War: Offensive Techniques in Binary Analysis](8.25_offsensive_techniques.md)
* [8.26 Driller: Augmenting Fuzzing Through Selective Symbolic Execution](8.26_driller_fuzzing.md)
* [8.27 Firmalice - Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware](8.27_firmalice_bypass.md)
* [8.28 Cross-Architecture Bug Search in Binary Executables](8.28_cross_arch_bug_search.md)
* [8.29 Dynamic Hooks: Hiding Control Flow Changes within Non-Control Data](8.29_dynamic_hooks.md)