前言
我好菜啊!真的没人看电影么?我请客!?
Again!有小姐姐一起看电影的么?!
hhhh~
分析
首先是个windows
程序,PE32+
尝试运行报缺少dll
,百度一下发现是用minGW
编译的,于是在电脑上装了minGW
但还是运行不了。-。-!!
IDA
查看全局搜索字符串可以看到virtual
字样,而且看这个程序的结构,套了四层while
,肯定是一个vm
的题,同时看到导入函数中有onexit
函数,这是一个linux下的回调函数,会在程序退出时执行注册的函数,不过这里对解题没什么影响。
我们可以很快的定位到main
函数
bytecode
变量名的提示也很明显,向上找到其交叉引用,可以到GLOBAL__sub_I__ZN7Machine8do_stuffEv
这个函数中,然后_refptr__binary_keycheck_start dq offset _binary_keycheck_start
,就可以找到bytecode
,将其提取出来,按照vm
的规则进行整理。如下
bytecode:
10 06 41 00 00 00 mov r6 0x41
10 07 50 00 00 00 mov r7 0x50
10 0A 08 00 00 00 mov ra 0x8
05 07 0A r7 <<= ra r7 = 0x50 << 0x8
10 08 56 00 00 00