首页
社区
课程
招聘
[讨论]有没有修改汇编指令含义的方法,比如修改0x55(push ebp)的含义为0xCC(int 3)
发表于: 2018-2-10 11:43 4534

[讨论]有没有修改汇编指令含义的方法,比如修改0x55(push ebp)的含义为0xCC(int 3)

2018-2-10 11:43
4534

最近调试程序遇到一个问题,极其猥琐,检测了各种断点,不好解决,忽然想到一个问题:


CPU是如何执行汇编指令的?
为什么0x55要对应 push ebp?
为什么0x33C0 要对应 xor eax,eax?


那么有没有一种可能性,让我们可以修改机器码的含义
把原本0x55的机器码含义修改成int3,这样就可以在避免修改主模块的情况下设置断点了。
带着这个问题,各种搜啊,似乎没有人研究过这个问题,所以把问题抛到这来了,欢迎大家讨论



[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 775
活跃值: (2312)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
这....我还是去睡觉吧 
2018-2-10 12:25
0
雪    币: 1339
活跃值: (2228)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
3
你可以自学IC设计,自己做个cpu
2018-2-10 13:50
0
雪    币: 193
活跃值: (2731)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
cpu的指令都是在制作的时候固定好的电路,怎么可能改?基础没学好吧。
2018-2-10 14:13
0
雪    币: 12857
活跃值: (9172)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
用虚拟机进行二进制翻译执行倒是可以,就是效率嘛。。。
2018-2-10 14:30
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
6
有时候找不到解决办法,不是问题太难了,而是解决问题的思路不对。
2018-2-10 14:35
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
关键字:指令译码器,CPU微码
2018-2-10 15:47
0
雪    币: 182
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
hzqst 用虚拟机进行二进制翻译执行倒是可以,就是效率嘛。。。
我也想到了类似代码虚拟化的东西,但是至于怎么利用还没有一个好方法
2018-2-10 21:33
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
9
CPU执行指令的方法都是写死在了电路里的,某个指令对应某个特定的state  machine。除非你把电脑拆了然后用微米级别的工具DIY他的逻辑电路,好吧就是不可能。
你可以试试虚拟化指令,vt什么的,这样的话就有可能
2018-2-10 23:35
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这个只能intel的CPU在制造的时候就加一个硬件开关,修改指令译码的映射表,为什么要硬开关,因为怕软开关被木马病毒控制
2018-2-11 01:25
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
Bochs软件模拟CPU全功能也可实现,速度太慢,蓝叠不就是模拟了arm安卓吗
2018-2-11 01:29
0
雪    币: 182
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好的,谢谢各位大佬的解答
2018-2-11 16:18
0
游客
登录 | 注册 方可回帖
返回
//