首页
社区
课程
招聘
[求助]OD条件断点多条件链接符号 “”&&“”
发表于: 2016-7-29 10:36 6771

[求助]OD条件断点多条件链接符号 “”&&“”

2016-7-29 10:36
6771

[esp+c]!=7&&[esp+c]!=8&&[esp+c]!=9  这个&& 在OD上是连接符的意思还是代表逻辑运算符?如果是逻辑运算符[esp+8]=="EnumProcesses"&&[esp+8]=="EnumProcessesModules"&&[esp+8]=="GetModuleBaseNameA",OD反调试的下这个几函数断点断不下来,反而反过来[esp+8]=="EnumProcesses"||[esp+8]=="EnumProcessesModules"||[esp+8]=="GetModuleBaseNameA",能断下2个函数,虽然没能断下三个,所以请问下前辈,OD && 链接符 实际上是不是逻辑运算符?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (4)
雪    币: 90
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
补充一小问题。就是如果&&是逻辑运算符 为什么三个条件都能成立支持断,而|| 或运算符只能2个跳转?按照&&是运算符的话 跟||逻辑运算符 是相同的 只能2个操作数啊?
2016-7-29 10:45
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
3
你这是操作符的优先级问题,具体谁先谁后我记不清了,可以查查相关资料,你这里就是!=优先于&&

后面补充的问题:在C语言里,&&是所有计算结果都为真最终结果才为真,所以每个条件都需要计算;而||是只要有一个计算结果为真则结果为真,所以计算时如果前面有一个是真就直接跳出了,后面的就直接不计算了
举个例子,
i=0;
if(i++>0)||(i++>0)||(i++>0)||(i++>0))printf(i);
这里结果应该是1
i=0;
if(i++>0)&&(i++>0)&&(i++>0)&&(i++>0))printf(i);
这里结果应该是4
(谁有运行环境帮我检测一下,不知道对不对)
2016-7-29 19:25
0
雪    币: 90
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哦哦,前辈你是指在OD 里面 && || 两个都是逻辑运算符。只不过&& 与运算无论多少条件 都要计算完,而|| 只要其中一个真 就跳出不计算后面了?,好像真的是这样。 谢谢解答
2016-7-29 21:43
0
雪    币: 4230
活跃值: (1435)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
5
举个例子,
i=0;
if(i++>0)||(i++>0)||(i++>0)||(i++>0))printf(i);
这里结果应该是1
i=0;
if(i++>0)&&(i++>0)&&(i++>0)&&(i++>0))printf(i);
这里结果应该是4

这里的i++要改为++i才能得到所给的结果。
2016-7-31 12:00
0
游客
登录 | 注册 方可回帖
返回
//