前言

转自老罗

“不管现在流行什么语言,你都可以肯定十年二十年之后它不再风光。我总是在自己的书中写些不时髦的东西,但这些东西却值得后代子孙记取。”

-- Donald E. Knuth

为什么要学习OpCode?

随着学习的深入和知识的积累,各位编程爱好者都一定不再满足于语言和表层知识的学习,而开始对系统的一些底层知识感到好奇,进而逐渐往深层次探究。正当我们为微软一轮轮的技术革新而强迫自己努力学习的时候,我们可曾花时间去考虑一些深层次的东西?

在编译器后端设计、反汇编器、病毒、破解等底层领域中,处处可见OpCode的影子,奇怪的是,很少有人真正深入地去研究这个领域的东西。一种技术的发展和流行,关键是要有好的书籍/教程作为指引,目前比较规范的中文的OpCode教程好像还没有,于是很多人在这个问题上,都只是处于摸索阶段,没有抓住问题的核心。在这里,希望能与大家分享一些我的经验和教训。

版权声明

本教程是完全免费和自由的,你可以自由拷贝,但请注明转载的出处。内容的大部分是翻译自国外的一些OpCode教程和资料,以及Intel的<<Instruction Set Reference>>,少部分是我的经验总结。参考资料将在下面给出。

准备工作

在开始之前,请先做好以下的准备:

  • 下载:<<IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference>>
  • 下载:<<AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions>>

参考资料

  • 最权威的 <<IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference>>
  • 同样权威的 <<AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions>>
  • 俄罗斯大哥The Svin
    的OpCode系列教程使我入了门。原文可以在board.win32asmcommunity.net通过搜索关键字“OpCode”找到。
  • AoD也是一份英文OpCode教程。

关于作者

罗聪,研究兴趣为算法和数据结构、编译原理等,可以通过电子邮件地址 lcother@163.net 与我联系。个人主页是:老罗的缤纷天地。

学习OpCode前言相关推荐

  1. 李笑来-- 学习学习再学习(前言)

    注:摘自李笑来之前的博客(已经无法正常访问了),只能通过https://web.archive.org/的备份访问,但是每次访问速度都很慢,索性转载过来,也便于今后查看. 学习学习再学习(前言) 在这 ...

  2. ROS2_Foxy学习1——前言与安装

    ROS2_Foxy学习1--前言与安装 前言 安装 安装环境:基于树莓派4B与Ubuntu20.04 mate 所遇问题 前言 1.关于ROS2.0的发布背景.优势等,可以参考古月居的ROS2探索总结 ...

  3. NumPy学习笔记前言

    前言目录 NumPy学习笔记前言 NumPy简介 NumPy学习准备 NumPy中文网 NumPy学习笔记前言 这里主要分享一下我个人学习NumPy的笔记,希望大家多多交流学习,这也是我第一次写CSD ...

  4. Altium Designer 超详细学习教程——前言

    前言 写在前面:本笔记主要内容来自于Altium Designer(Protel)原理图与PCB设计教程--江思敏,主要是站在巨人的肩膀上进行相关学习整理,加入更多个人学习中的困惑和心得体验,主要是想 ...

  5. 关于批处理的学习之一[前言]

    1 前言 无意中发现了批处理的强悍作用是不容忽视的,而在几周之前我连其概念都不知道.批处理在某些情况下有着与编程类似的思想,有人说批处理是一种宏.从应用范围上来看,批处理的用途非常广泛.了解到了其实用 ...

  6. C语言学习笔记--前言

    C语言学习笔记之前言 最近学习C语言,留下些学习笔记,以便后面返回复习,同时也算时分享一下自己的学习记录(学习C语言用的是狂人c这本书有兴趣可以去学习原著) 最近学习C语言,留下些学习笔记,以便后面返 ...

  7. 学习Transformer前言(Self Attention Multi head self attention)

    一.前言 一直在做项目,也比较懒没有挤出时间去学习新的东西,感觉停滞很久了,好长一段时间都没有新的知识输入,早就需要就去学习transformer了,因此先来学习注意力机制,本文为个人的一个笔记总结. ...

  8. Spring.NET学习笔记——前言

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入.面向方面编程(AOP).数据访问抽象及ASP.NET扩展等等.Sprin ...

  9. JDK源码学习之前言

    最近工作上的事情不是很多,感觉对自己的提升不是很高. 在组内各位大神的推荐下,还是去看下JDK的源码提升下自己的java基础知识,主要学习的是JDK的源码.配合java编程思想一起学习. 近期目标,把 ...

最新文章

  1. 操作系统:Android(Google公司开发的操作系统)
  2. CSS3的chapter3
  3. TypeScript 里 object 和 Object 的区别
  4. RPC调用和HTTP调用的区别你知道吗
  5. P2217-[HAOI2007]分割矩阵【dfs,记忆化搜索】
  6. java和vue2.0
  7. 可以使用田忌赛马类贪心问题的前提(或说 如何判断题目符合田忌赛马类贪心问题)
  8. 没数据时y轴不显示_Matplotlib数据可视化
  9. django 1.8 官方文档翻译: 6-6-1 部署 Django
  10. 小学生计算机课堂实践的重要性,小学《信息技术》有效课堂教学的实践与研究课题方案...
  11. JAVA一般指WEB服务器开发,是技术管理必须熟悉的
  12. Microsemi Libero使用技巧3——使用FlashPro单独下载程序
  13. 网络邻居没有查看工作组计算机,为什么网上邻居内看不到计算机工作组
  14. 2022最新前端vue面试题
  15. tier1和tier2_数据中心Tier1-Tier2-Tier3-Tier4
  16. 如何将文字转换为二维码 python_用python将二维码转换成字符直接输出控制台
  17. Sam版Matlab粒子群PSO工具已经更新
  18. GAN异常检测论文笔记(一)《GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training》
  19. Macbook无法开机备份数据 制作安装系统U盘 安装系统 (图文)
  20. 徐家骏是华为数据中心的头,技术超级牛人,一级部门总监,华为副总裁,年收入过千万。

热门文章

  1. QQ群非管理员@所有人的方法
  2. 银行储蓄管理系统 课程设计
  3. HSV色彩空间和颜色分量范围
  4. MATLAB实现分支定界法求解整数规划
  5. 2022年上海应届生落户公司要求!打分不够72的同学可以考虑!
  6. 解构TypeScript中class
  7. 【MFC】学习笔记:文件操作类——CFile
  8. 路由的实现原理是什么?
  9. BGP协议详解(一)
  10. mysql的prepared statement