https://bbs.kanxue.com/thread-267670.htm
全局变量中的堆栈、寄存器和字符串共同构成了内存 +CPU 寄存器
先查找到 opcode(伪机器码),然后找到 dispatcher(就是模拟 CPU 读取指令的分发器),然后边分析那些伪汇编函数 (就是模仿汇编指令的函数) 边查找模拟的 CPU 的栈,寄存器,全局变量 (多是字符串) 等
- vm_nop
- vm_push_data
- vm_push_reg
- vm_pop_reg
- vm_printf
- vm_add_reg_reg1
- vm_sub_reg_reg1
- vm_mul
- vm_div
- vm_xor
- vm_jmp
- vm_cmp
- vm_je
- vm_jne
- vm_jg
- vm_jl
- vm_scanf_strlen
- vm_mem_init
- stack_to_reg
- load_input
- vm_exit
招新赛:
# 0 mov r3, 0
# 3 mov r0, [flag+r3]
# 6 mov r1, 35
# 9 xor r0, r1
# 12 mov r1, 17
# 15 add r0, r1
# 18 mov r1, [data+r3]
# 21 eq 0, r1
# 24 je r0, 43
# 27 mov r1, 1
# 30 add r3, r1
# 33 mov r1, 28
# 36 l r3, r1
# 39 je r1, 3
# 42 return 1
# 43 return 0