解题步骤
这题我们有三种方法来获取flag,第一种我们是借助Cheat Engine工具后两种是我们熟悉的动态分析和静态分析
第一种方法:借助Cheat Engine工具
解压出来后发现是一个exe文件
我们双击运行该exe文件
我们发现该程序类似于一个游戏,可能点击1000次然后check,flag就出来了
因为每点击一次ClickCurrent Hits就会增加一次,所以我们可以借助CE这个工具附加这个程序的进程,如下图所示
附加后我们进行如下操作
1. Curents Hits为7的时候,我们在箭头标记的框里也是7,扫描类型为精确数值,数据类型为4字节,然后单机首次扫描按钮
2.继续前面的操作不同的是,我们这里的数值是9,然后点击再次扫描按钮
这里出现了一个地址,那么我们猜这个地址就是用来修改Curents Hits的值
将选中的地址添加到地址列表
我们可以在最下面会出现这个地址,我们双击选中该地址然后把该数值改成999后点击确定
我们可以看到这里的值修改成999了,然后我们回到程序,再点击一次Click就会出现flag
我们可以看到答案为:flag{TIBntXVbdZ4Z9VRtoOQ2wRlvDNIjQ8Ra}
如此我们解题就完成啦!
第二种方法,IDA静态分析
首先我们就是查壳了
老样子,这里无壳,而且是32位程序
然后打开我们的IDA加载程序
我们可以用可以发现有很多的函数名称,我们可以在函数名称的窗口Ctrl+F搜索main函数
然后WinMain就是我们的程序入口点了,这里为什么是WinMain而不是main函数呢?
这是因为我们的程序是用WIN32程序写的,所以程序入口点会不一样
好在这题的不是为了考我们win32的知识点
进入到main函数后,大部分是WIN32的函数,我们看不懂我们这时运行程序,看看错误提示
出现了一个Error的错误提示,然后我们进入IDA后按F12进入
搜索字符串的区域
然后Ctrl+F搜索Error
然后双击第一个Error
把鼠标点到Error的位置然后Ctrl+x交叉引用到达汇编指令的地方,然后,我们往上面一点找就能找到flag了
第三种方法:OD动态分析
我们运行OD后,把程序拖动进OD
我们来到程序入口点OEP,鼠标右键找到中文搜索引擎,搜索ASCll
我们继续鼠标右键找到Find,然后查找Error
我们可以发现flag就在上面
那么解题思路就这里了