首页
社区
课程
招聘
[旧帖] [求助]NOP的使用 0.00雪花
发表于: 2014-5-30 17:38 1898

[旧帖] [求助]NOP的使用 0.00雪花

2014-5-30 17:38
1898
这星期刚买了《加密与解密》第三版开始看,对于动态调试中的Trackme.exe修改NOP指令存在一些疑惑。http://bbs.pediy.com/showthread.php?t=78976这是论坛看到的,其中提到“NOP指令在执行时仅仅占用了一个机器周期,CPU无其他动作,直接进入下一条指令运行,因此程序就不会跳转”。想问一下为什么不可以直接删掉跳转指令?还有判断跳转的指令改为NOP指令,为什么会由一条指令变为两条NOP指令?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 101
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
当前跳转指令如果占二个字节 就要改两个 nop(占一个字节)  

你....你说你对得起你头像下面的月亮么....
2014-5-30 18:05
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这也是为什么不能直接删掉原跳转指令的原因吗?
2014-5-30 18:12
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有时候用nop指令是用来占位以便以后加入代码。不过感觉更多是用来保证指令总数不变用来填充用的
2014-5-30 19:03
0
雪    币: 59
活跃值: (1481)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
直接删掉跳转指令 会改变文件大小的。。搞起来很不方便的。改成nop多好呢。简单方便
2014-5-31 11:29
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
确实,nop用好了的话真不错。
2014-5-31 16:40
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
汇编指令是没有“删”这一说的,只能“改”。
想要去掉某个跳转,就直接把它用nop占位。
说个最直接的例子,call指令的跳转地址是一个相对地址,如果你删掉了汇编里的某条语句,那后面的call跳转地址都要重新计算。。。
所以还是改成nop方便,影响小的多,效果相同。
2014-6-1 04:58
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谁能破解这个  一个随机码 不带网络验证 求授权码 懂得有没
2014-6-1 08:14
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
原来如此~学习了~谢谢各位~
2014-6-1 11:01
0
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
LZ应该补习补习基础知识啦~

NOP的作用通常是在CPU的指令流水线中充当一个无意义指令的作用以维持流水线和时序的正常运转,防止出现流水线灾难。在很多指令集中,NOP的实质是执行一条不更改任意寄存器状态(除程序计数器)和内存数据的指令,例如在x86中NOP=XCHG EAX, EAX(机器码同为0x90)。甚至在ARM指令集中“剔除”掉了NOP,允许编译器使用任意相同含义的指令(比如MOV Rn, Rn)代替。

回到x86汇编,LZ应该明白汇编有很多跳转指令(例如jmp,jne,je),这些跳转指令的目的地址通常是一个相对偏移地址(即位移,比如机器码0xEB 03翻译成自然语言就是“无条件向后跳转三个字节”)。既然是相对地址,也就是最终目的地是与指令当前所在位置有关。如果上面这条指令位于0x40 00处,则执行完毕之后IP寄存器将变成0x40 05。

好,现在考虑“删除”0x40 02到0x40 05这里的指令(注意,并非像7L所言指令不能被删除),于是所有指令都会上移,从而补足被删除的空间。那么,原本0x40 05处的指令必然不是之前希望跳转的目的指令。这样只会导致一个结果:程序预期执行结果出错。当然,你也可以遍历程序中用到的所有指令,将这个“删除”过程带来的位移变动全部纠正(这显然不是一件很轻易的事情)。

加上NOP指令在可变长度指令集中通常会是一个最小指令占用空间,使得任意长度的指令均可以被任意个数的NOP指令正确替换。这样一来,NOP指令充当“删除”动作的替代品最为合适不过。
2014-6-1 12:20
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
太感谢了~刚开始接触,这几天正在看中山大学汇编视频,认真做笔记呢~恶补基础~
2014-6-1 13:42
0
雪    币: 24
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
真心 无语 不让发帖
2014-6-1 15:06
0
游客
登录 | 注册 方可回帖
返回
//