Code Monkey home page Code Monkey logo

learn-binary-hacking's Introduction

二进制安全学习笔记

序言


这份笔记是笔者在学习二进制安全相关知识中的一些记录,用作整理思路、记录想法。笔者所学浅薄、精力有限,在整理笔记的过程中难免存在一些错误或是不完整的部分,正在逐步修正和补充。如果存在疏漏、错误,欢迎各位读者以Issue或者PR的方式批评指正,感激不尽。

在编写笔记的过程中参考、摘抄了很多资料,都在文末留下了相应的链接,十分感谢文章作者的分享。其中笔记的在线版本可以点击这里查看。

笔记大纲


  1. 基础知识
    1. 计算机发展简史
    2. 布尔代数
    3. 大小端与数据表示
  2. 计算机体系结构
    1. 计算机系统构成
    2. CPU
    3. BIOS
    4. 内存
    5. 硬盘
    6. 总线
    7. 设备
    8. I/O
    9. 内核
  3. 嵌入式设备
    1. 固件解包
    2. HAL
    3. 硬件
    4. 4G
    5. BLE
    6. 可信启动
    7. 路由设备
    8. Android
    9. iOS
    10. 安全性
  4. 汇编基础
    1. 区别
    2. x86
    3. ARM
    4. MIPS
    5. PowerPC
  5. 编译原理
    1. 基础知识
    2. 词法分析
    3. 语法分析
    4. 语义分析
    5. 中间代码生成
    6. 代码优化
    7. 代码生成
    8. LLVM
    9. JIT
    10. 相关术语
  6. 操作系统
    1. 概述
    2. Boot
    3. Linux
    4. Mac OS
    5. Windows
    6. Android
    7. iOS
  7. 虚拟化
    1. 基础
    2. 虚拟化技术
    3. Virtio
    4. VMWare
    5. KVM
    6. Xen
    7. QEMU
    8. Unicorn
    9. Intel虚拟化技术
    10. 其他
  8. 逆向工程
    1. ELF
    2. PE
    3. DLL
    4. Mach-O
  9. 漏洞利用基础
    1. Shellcode
    2. Stack
    3. Heap
  10. 栈相关漏洞
    1. 调用机制
    2. ROP
    3. 栈溢出
  11. 堆相关漏洞
    1. Use After Free
    2. Off By One
    3. 堆溢出
  12. 其他漏洞
    1. 格式化字符串
    2. Type Confusion
  13. 防御策略
    1. ASLR
    2. Canary
    3. CFI
    4. NX
    5. 沙箱机制
    6. 安全编程
  14. 工具与资源
    1. 工具列表
    2. 书单
    3. 文档资料
    4. 逆向工具
    5. 调试器
    6. 编译工具
    7. 系统工具
  15. 其他
    1. 垃圾回收
    2. 沙箱
    3. 常见术语

本地编译


git clone https://github.com/LyleMi/Learn-Binary-Hacking.git
cd Learn-Binary-Hacking
pip install sphinx sphinx-rtd-theme
make html

Contribution


如果有任何的问题、意见或者建议欢迎以Issue或PR的形式提出,不胜感激。

感谢所有的贡献者

License


项目以CC0 1.0许可证发布,可以点击这里浏览全文。


该笔记仅供学习和交流使用,请读者遵守《中华人民共和国网络安全法》,勿对非授权目标进行测试。

learn-binary-hacking's People

Contributors

lylemi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

learn-binary-hacking's Issues

操作数顺序中的格式是不是写错了.

4.2.3. 操作数顺序

AT&T和Intel格式中的源操作数和目标操作数的位置正好相反。
在Intel汇编格式中,目标操作数在源操作数的左边,如 addl $1, %eax
而在AT&T汇编格式中,目标操作数在源操作数的右边,如 add eax, 1

AT&T的寄存器和立即操作数才需要加前缀, Intel的不用, 但是内容里面是不是写反了 😐

Hi

您好Lyle ,

抱歉以这种方式联系,希望没有太打扰,这个issue后面我可以自行删除。

我们这边是一个做二进制安全检测产品的团队(fuzzing),有高校背景,坐标北京,正在寻找技术人才。了解您这边情况后非常感兴趣,希望有机会能聊一聊:)

我的qq:28927453

谢谢!
@LyleMi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.