-
-
[原创]第三题 寻踪觅源
-
发表于: 2020-4-18 20:10 4376
-
本题用quickjs实现校验逻辑
解体思路
1. 在0x45781B _JS_NewAtomStr处下断,可以获得一些JS变量的信息
0x171 un
0x172 sn
0x173 s
0x174 i
0x175 j
0x176 k
0x177 l
0x178 m
0x179 n
0x17a 5ADACAEBF4B4A8A4
0x17b 31430057b0557020141973402736****
0x123 charCodeAt
0x121 fromCharCode
0x16f print 这个是Console.log
0x171 un
0x172 sn
0x173 s
0x174 i
0x175 j
0x176 k
0x177 l
0x178 m
0x179 n
0x17a 5ADACAEBF4B4A8A4
0x17b 31430057b0557020141973402736****
0x123 charCodeAt
0x121 fromCharCode
0x16f print 这个是Console.log
3. 在0x4017D5处下断,ebx指向bytecode,对bytecode进行分析,大概逻辑如下:0x04 OP_push_atom_value0x06 OP_undefine0x0E OP_drop JS_FreeValue(ctx, sp[-1]);0x11 OP_dup0x24 op_call_method 20x39 OP_get_var0x3A OP_put_var0x3F OP_define_var0x40 OP_check_define_var0x43 OP_get_field20x93 OP_post_inc +10x9C OP_mul0x9E OP_mod0x9F OP_add0xA5 OP_CMP(OP_lt, <, js_relational_slow(ctx, sp, opcode));0xA6 OP_CMP(OP_lte, <=, js_relational_slow(ctx, sp, opcode));0xA7 OP_CMP(OP_gt, >, js_relational_slow(ctx, sp, opcode));0xA8 OP_CMP(OP_gte, >=, js_relational_slow(ctx, sp, opcode));0xA9 OP_CMP(OP_eq, ==, js_eq_slow(ctx, sp, 0));0xAA OP_CMP(OP_neq, !=, js_eq_slow(ctx, sp, 1));0xAB OP_CMP(OP_strict_eq, ==, js_strict_eq_slow(ctx, sp, 0));0xAC OP_CMP(OP_strict_neq0xB0 OP_xor0xB7 OP_push_00xBF OP_push_i80xC1 op_push_?0xCB OP_put_loc0? set_value(ctx, &var_buf[0], *--sp)0xEE OP_goto80xEB OP_get_length0xEC goto_if_false0xF1 OP_call1
0x04 OP_push_atom_value
0x06 OP_undefine
0x0E OP_drop JS_FreeValue(ctx, sp[-1]);
0x11 OP_dup
0x24 op_call_method 2
0x39 OP_get_var
0x3A OP_put_var
0x3F OP_define_var
0x40 OP_check_define_var
0x43 OP_get_field2
0x93 OP_post_inc +1
0x9C OP_mul
0x9E OP_mod
0x9F OP_add
0xA5 OP_CMP(OP_lt, <, js_relational_slow(ctx, sp, opcode));
0xA6 OP_CMP(OP_lte, <=, js_relational_slow(ctx, sp, opcode));
0xA7 OP_CMP(OP_gt, >, js_relational_slow(ctx, sp, opcode));
0xA8 OP_CMP(OP_gte, >=, js_relational_slow(ctx, sp, opcode));
0xA9 OP_CMP(OP_eq, ==, js_eq_slow(ctx, sp, 0));
0xAA OP_CMP(OP_neq, !=, js_eq_slow(ctx, sp, 1));
0xAB OP_CMP(OP_strict_eq, ==, js_strict_eq_slow(ctx, sp, 0));
0xAC OP_CMP(OP_strict_neq
0xB0 OP_xor
0xB7 OP_push_0
0xBF OP_push_i8
0xC1 op_push_?
0xCB OP_put_loc0? set_value(ctx, &var_buf[0], *--sp)
0xEE OP_goto8
0xEB OP_get_length
0xEC goto_if_false
0xF1 OP_call1
0x04 OP_push_atom_value
0x06 OP_undefine
0x0E OP_drop JS_FreeValue(ctx, sp[-1]);
0x11 OP_dup
0x24 op_call_method 2
0x39 OP_get_var
0x3A OP_put_var
0x3F OP_define_var
0x40 OP_check_define_var
0x43 OP_get_field2
0x93 OP_post_inc +1
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- [原创]第八题 牛刀小试 4301
- [原创]第六题 一尺之棰 5148
- [原创] 第五题 闻鸡起舞 4108
- [原创]第三题 寻踪觅源 4377
- [原创]第二题 子鼠开天 2627
看原图
赞赏
雪币:
留言: