-
-
[原创]看雪ctf 2017 No.14
-
发表于:
2017-6-28 09:12
5169
-
随缘做题 2333
程序带壳,用查壳工具没能查出来是什么壳,那这个应该是作者原创的,只能手工脱壳了,可是。。。。我不会脱壳,瞎捣腾一番,毫无结果。。。
在最后快要放弃的时候,尝试了一次投机的方法,运行程序,用OD附加,转到401000,然后dump,发现能dump!!!
这样就得到了疑似脱壳后的代码了,然后是字符串搜索,定位到sub_40679A()
其中sub_4074A3()如下
所以v0上的数据就是'Please enter the key: '
sub_40752A()的功能不清楚,不过看起来那么复杂,应该是库函数吧,根据实际就暂时把他当做printf之类的函数吧
找到调用sub_40679A的函数sub_407165()
这里的过程看上很怪。。。不过里面的函数有点特别,比如sub_40818E,sub_407918,sub_407E2F,他们的参数里都有一个函数地址,跟进分析这些函数地址,根据其代码,分析猜测其功能,然后推测出其验证过程:输入长度为12的字符串交由bf_vm验证。
bf_vm函数如下
这里输入的字符串会转成bit,然后程序根据预先准备好的bf代码生成字节码,然后再开始运行vm
bf_func函数如下
这里的功能跟bf的并没多大不同,只是case 5和case 6需要注意,case 5如下
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!