前言

转自老罗

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

-- 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. 一系列图论问题[转]
  2. 剑指offer:滑动窗口最大值
  3. 洛谷 - P2754 [CTSC1999]家园(最大流+并查集)
  4. Linux软件管理之yum
  5. ajax是宏任务还是微任务,(滴滴面试)事件循环Event Loop及微任务和宏任务的执行过程详解...
  6. 前端笔试题【1】--从字符串的第二个字符开始对数组进行排序
  7. 1核1g java_wordpress博客1核1G1M够用吗
  8. hdu2074java
  9. 如何分析竟争网站和优秀网站的设计风格
  10. Coursera营养学课程考试小抄
  11. idea javafx添加maven_IntelliJ IDEA使用之JavaFX
  12. Oracle将Java EE移交Eclipse基金会
  13. uniapp某个页面高度占满写法
  14. VB.Net程序设计:分页控件
  15. c语言 银行叫号系统,【分享】C语言 银行取票排队系统
  16. 2019 vs 查看类图结构_在建筑网站上使用单页设计还是多页设计哪个更好_学云网...
  17. ElasticJob - 任务执行过程解析
  18. python 写入文件时编码问题
  19. 给老年人“种草”,是不是一门好生意?
  20. 基于树莓派SHT20温湿度采样

热门文章

  1. 一文助你搞懂单纯形法
  2. 记笔记格式 — markdown 语法
  3. unity 编辑器窗口 批量修改文件名字
  4. Ubuntu18.04耳机无声音解决方法
  5. tabindex 用法说明
  6. 使用CSS设置重叠层次
  7. 计算机英语nic,计算机与网络英语词汇(N2)
  8. JQuery:$(...).ajaxSubmit is not a function
  9. 【异常分析】Springboot中使用测试类报空指针(at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs)
  10. 应用程序正常初始化(0xc0150002)失败的终极解决方案