背景
Javascript 逆向分析过程中,经常会碰到混淆后的多层嵌套的三目运算符,这里我们给出一个案例来具体分析下
目标表达式
var result = a ? b ? c ? d ? e ? f : g : h : i : j ? k ? l ? m ? n : o : p : q;
大家先思考一下,a 为假的时候返回什么?为真又返回什么?
分析过程
为了便于分析,我们先将其重新格式化以更清晰地展示嵌套关系:
var result = a
? b
? c
? d
? e
? f
: g
: h
: i
: j
? k
? l
? m
? n
: o
: p
: q;
现在,我们可以按照从左到右的顺序逐层解析这个表达式。
- 首先,根据
a的值判断条件:- 如果
a为真,则继续解析下一层三目运算符; - 如果
a为假,则直接返回结果j。
- 如果
- 接下来,根据
b的值判断条件:- 如果
b为真,则继续解析下一层三目运算符; - 如果
b为假,则直接返回结果i。
- 如果
- 继续类似地,根据
c、d、e的值,依次判断条件并解析下一层三目运算符。
综上所述,如果每个条件的结果都是布尔类型(true 或 false),那么根据 JavaScript 运算符优先级规则,我们可以按照从左到右的顺序解析表达式。
本文通过一个案例详细解析了在Javascript逆向分析中遇到的多层嵌套三目运算符,说明了如何根据布尔条件逐层判断并遵循运算符优先级进行解析。
1639

被折叠的 条评论
为什么被折叠?



