没有合适的资源?快使用搜索试试~ 我知道了~
首页Svin的OpCode教程
Svin的OpCode教程
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
Svin的OpCode教程,自己看那看。 Svin的OpCode教程
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/4451065/bg1.jpg)
看雪软件安全
http:www.pediy.com
1
The
The
The
The Svin
Svin
Svin
Svin
的
OpCode
教程
![](https://csdnimg.cn/release/download_crawler_static/4451065/bg2.jpg)
看雪软件安全
http:www.pediy.com
2
说明 :
1. 这篇教程原文分为 8 帖 , 它们的地址分别为 :
Opcode #1 http://www.asmcommunity.net/board/index.php?topic=8963
Opcode #2 http://www.asmcommunity.net/board/index.php?topic=8967
Opcode #3 http://www.asmcommunity.net/board/index.php?topic=8982
Opcode #4 http://www.asmcommunity.net/board/index.php?topic=9062
Opcode #5 http://www.asmcommunity.net/board/index.php?topic=9063
Opcode #6 http://www.asmcommunity.net/board/index.php?topic=9741
Opcode #7 http://www.asmcommunity.net/board/index.php?topic=10554
Opcode #8 http://www.asmcommunity.net/board/index.php?topic=14153 ( 无实质内容 , 未
翻译 )
2. 原帖并没有标题 , 标题是翻译的时候加上去的 .
3. 由于原作者是俄罗斯人 , 英语不是太好 ( 有语法错误 ), 有些语句我是根据自己
的理解翻译过来的 .
4. 不知道有前辈翻译过这个没有 ? 至少我在 google 上没有找到 .
5. 希望这个对你有用 .
6. 感谢朋友 Gyf 所做的校对 .
7. 错误之处在所难免,敬请指正。 bottlexx@163.com
X iep
2008.08.19
![](https://csdnimg.cn/release/download_crawler_static/4451065/bg3.jpg)
看雪软件安全
http:www.pediy.com
3
目录
1. 概览 ------------------------------------------------------------------------------------------ 4
2. OpCode 的结构 ----------------------------------------------------------------------------- 6
3. 开始和结束 --------------------------------------------------------------------------------- 10
4. Prefixes 66h ----------------------------------------------------------------------------------- 14
5. Prefixes 67h,F2h,F3h ------------------------------------------------------------------------ 17
6. Prefixes Segment override and LOCK ---------------------------------------------------- 19
7. Bit filed ---------------------------------------------------------------------------------------- 25
![](https://csdnimg.cn/release/download_crawler_static/4451065/bg4.jpg)
看雪软件安全
http:www.pediy.com
4
一 概览
这本书为那些像本人一样渴求知识而不得的人而写 .
这套教程的风格是通过练习得出结论 , 而不是依据结论来做练习 . 换句话说 , 这
篇教程包含很多的例子和练习 . 深入学习本教程理论最好的方法是做所有的练习 ,
以及试验所有的例子 .
这本教程并不讲汇编语言编程 , 我们讲的是 "OpCode".
What
What
What
What "OpCode"
"OpCode"
"OpCode"
"OpCode" is?
is?
is?
is?
这是课程要解决的主要问题 , 现在我给一个简短的回答 .
当我们在源代码中写入 "lodsb", 在编译阶段汇编器 ( 如 ml.exe) 遇到 "lodsb", 它会
在可执行文件 ( 或 .obj 文件 ) 中用一个字节 ACh 来替代它 .
ACh 就是所谓的 OpCode,"lodsb" 则是助记符 (mnemonic).
助记符 "lodsb" 对汇编器 ml.exe 说 ," 给我用字节 ACh 替换 lodsb". 处理器并不知
道 lodsb 是什么 . 当寄存器 EIP 指向 ACh 字节时 , 处理器解码器对字节 ACh 解码 , 通
过这个字节处理器就知道程序要将寄存 器 ES
I
指向的一个字节的内容送 入 A L 寄存
器 .
OpCode 就是如此简单 .
你可能会说 : 一个助记符是某个特定的操作码的别称 .
但是 , 事实并没有如此简单 . 对于 "lodsb" 这个特定的助记符来说 , 它确实对 应
ACh, 并且操作码 ACh 也唯一确定助记符 "lodsb". 然而并非所有的情形都是这样 . 我
们很快会见到 " 为什么不 " 的例子 .
就像现实生活中一个名称往往并不唯一对应一个事物一样 ,OpCode 和助记符
的关系如下 : 不同的 OpCode
OpCode
OpCode
OpCode 可能有同样的助记符 ; 一个 OpCode
OpCode
OpCode
OpCode 可能有几个助记
符对应 .
.
.
. 有些事情可能很简单但却会吓倒初学者 ,
,
,
, 在不久的将来我将会做详细的解
释 .
.
.
.
查看 OpCode 或 mnemonics 的方法有很多种 , 我认为最快且最好的方法是使用
调试器 . 我将在 OllyDbg 中试验所有的例子 .
Exersize1. 在调试器中输入助记符和 OpCode
1. 用 O D 打开任意一 个 Win3 2 可执行文件 , 加载完成后在代码窗口中双击某一
行 , 在弹出的指令输入对话框中输入 lodsb 回车 , 你将看到 ( 类似下面的内容 ):
0040108C> AC LODS [BYTE DS:ESI]
第一列 (0040108c) 是指令在内存中的地址 , 第二列 (AC) 是 OpCode, 第三列
(LODS [BYTE DS:ESI]) 是 OpCode AC 的助记符 .
2. 你可以试着输入一些你其他的助记符 , 并观察他们的 OpCode.
3. 按 CTRL + e, 你将看到一个对话框 , 在 HEX + 00 对应的文本框中输入 A C
回车 , 可以看到第二列和第三列如下 :
AC LODS [BYTE DS:ESI]
4. 试着输入一些其他的 OpCode, 并观察对应的助记符 .
Exersize2. 一个助记符对应一个 OpCode 吗 ?
1. 按 CTRL+ e, 输入 OpCode 90, 回车 , 可以看到 OD 将 90 认为是 NOP:
![](https://csdnimg.cn/release/download_crawler_static/4451065/bg5.jpg)
看雪软件安全
http:www.pediy.com
5
0040108E 90 NOP
2. 输入助记符 "NOP", 同样看到 :
0040108E 90 NOP
3. 输入助记符 XCHG EAX, EAX
糟糕 ! OllyDbg 并没有插入我们的指令 , 而是用 NOP 代替 !!!
不用着急 , 这是 OllyDbg 的问题 , 当看到 OpCode 90 的时候它总是显示 NOP, 而
不是 xchg eax,eax. 对我们来说这两个助记符 "xchg eax,eax" 和 "nop" 都显示 90h.
由此可见 , 一个事物 (OpCode) 不只对应一个名字 ( 助记符 ).
我再重复一次 : 在计算机世界里有的只 是 OpCode,
OpCode,
OpCode,
OpCode, 助记符只是这 些 OpCod
OpCod
OpCod
OpCod e
e
e
e 的
名字 ,
,
,
, 这些助记符组成的系统就是汇编语言 ,
,
,
, 助记符并不完美 ,
,
,
, 因为没有完美的语言
----
----
----
---- 任何语言的描述和现实总是有或多或少的区别的 .
.
.
.
在我们得出某些结论之前 , 我们先来做第二部分的练习 .
Exersize3.
1. 输入助记符 add eax,1 , 你将看到
0040108E 83C0 01 add eax,1
2. 输入 OpCode 05 01000000 , 我们将惊奇的发现
0040108E 05 01000000 add eax,1
同样的助记符但是不一样的 OpCode!
事实上它们不仅大小不同 , 结构也不一样 . 第一个 (83C0 01)3 字节长 , 包含 3 个
域;第二个 (05 01000000)5 字节长 , 但只有两个域 .
在我们学习这些域之前 , 我们先来想一想 : 当你看着这两个 OpCOde:
83C0 01
05 01000000
你是否想到 :
第一 个 OpCod e 中 0 1 和第二 个 OpCod e 中 01000000 是加到 EAX 的立即数 ?
既然助记符 向 OpCod e 可以有多种转换的方式 , 那么到底什 么 OpCod e 将会被插
入 exe 文件中 ? 这是由什么决定的呢 ?
答案是 : 这是由汇编器决定的 .
当我们在数据段中写入一些值时 , 我们往往会使用 :somevar db 0AH,0DH ;
而在代码段中我们不需要输入名字而只需定义值 :db ACH. 所以你可以用 16 进制
写代码段 , 比如用
Mov esi,offset somedata Mov esi,offset comedata
Lodsb 代替 db ACH
好了 , 又到了我断开网络的时候了 , 我必须把我所写发送出去 , 否则我什么也不
能提交 . 下次我们将 从 OpCod e 的结构开始 , 只是一个介绍而已 , 还涉 及 OpCOd e 的一
些重要而一般的特性 . 你将发现这是多么的易学和实用 .
剩余41页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://profile-avatar.csdnimg.cn/532f595fb55c4d18846e55f38566291d_yhage.jpg!1)
yhage
- 粉丝: 1
- 资源: 89
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 利用迪杰斯特拉算法的全国交通咨询系统设计与实现
- 全国交通咨询系统C++实现源码解析
- DFT与FFT应用:信号频谱分析实验
- MATLAB图论算法实现:最小费用最大流
- MATLAB常用命令完全指南
- 共创智慧灯杆数据运营公司——抢占5G市场
- 中山农情统计分析系统项目实施与管理策略
- XX省中小学智慧校园建设实施方案
- 中山农情统计分析系统项目实施方案
- MATLAB函数详解:从Text到Size的实用指南
- 考虑速度与加速度限制的工业机器人轨迹规划与实时补偿算法
- Matlab进行统计回归分析:从单因素到双因素方差分析
- 智慧灯杆数据运营公司策划书:抢占5G市场,打造智慧城市新载体
- Photoshop基础与色彩知识:信息时代的PS认证考试全攻略
- Photoshop技能测试:核心概念与操作
- Photoshop试题与答案详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)