Crook 发表于 2015-1-7 21:08

如何在空白代码里面写个判断,简单的小问题

我想在OD里面的一个逆向关键地方跳到空白代码 自己写个判断 当eax=2的时候

下面的je或者jnz什么的跳转就能实现 如果eax是大于或者小于2的时候就不跳 求师傅指导


bettering 发表于 2015-1-7 21:08

本帖最后由 bettering 于 2015-1-7 22:12 编辑

   JA/JNBE 不小于或不等于时转移.
      JAE/JNB 大于或等于转移.
      JB/JNAE 小于转移.
      JBE/JNA 小于或等于转移
所以
mov eax,2--EAX赋值
cmp eax,2--对比
jnb xxxxxx--这里就是实现的跳转了


zl123456 发表于 2015-1-7 21:50

条件跳转设置条件即可mov

Crook 发表于 2015-1-7 22:18

bettering 发表于 2015-1-7 22:08
JA/JNBE 不小于或不等于时转移.
      JAE/JNB 大于或等于转移.
      JB/JNAE 小于转移.


大大是判断寄存器的eax不是自己赋值给eax呢

现在我确实想不出好的办法

Crook 发表于 2015-1-7 22:19

zl123456 发表于 2015-1-7 21:50
条件跳转设置条件即可mov

师傅 详细一点吧,小菜有点没底

bettering 发表于 2015-1-7 22:31

Crook 发表于 2015-1-7 22:18
大大是判断寄存器的eax不是自己赋值给eax呢

现在我确实想不出好的办法

……我只是给EAX一个值,既然eax有值了,你直接判断不就行了{:5_188:}

阿菜 发表于 2015-1-7 22:47

1.jmp 空白处
2.cmp eax,2
3.je到6
4.mov 赋值给影响跳转的因素(不等于2时)
5.jmp 回去
6.mov 赋值给影响跳转的因素(等于2时)
7.jmp 回去

Crook 发表于 2015-1-7 23:25

bettering 发表于 2015-1-7 22:31
……我只是给EAX一个值,既然eax有值了,你直接判断不就行了

感谢师傅,是我糊涂了 没好好查指令 其实是一个比较复杂的SMC 谢谢师傅了

520Kelly 发表于 2015-1-8 15:01

7楼说得很清楚了,就是一个简单的比较指令的运用
cmp eax, xx

kingone 发表于 2015-1-10 21:55

估计楼主是遇到某个patch的位置几次断到的情况了,

建议是每次运行一次把运行次数放到代码断,每次断到的时候 读取一次这个代码段的数据


页: [1] 2
查看完整版本: 如何在空白代码里面写个判断,简单的小问题