[FlareOn6]demo
emm, 运行了一下是一个3D的Flare-on图标, 不知道是什么引擎.
拖进IDA竟然...什么也没有, 好家伙, 没有遇到过这种情况
File is corrupted, 我感觉这是PE头有一些问题, 导致IDA啊, Exeinfo都不能正常识别, 同时这个程序跑着跑着就会自己卡死, 不管再快attach进去已经在ntdll了, 这里我觉得可能需要监控一下WinAPI的调用, 或者直接动调脱壳
大概在这个位置找到入口点, 这儿是瞎按的, 我打算是有了窗口再看它如何绘图
从4000D3处ret走
在420000处出现了大量的函数调用, 这里换了olly, 因为x32死活不给跑了
42000DB处终于找到了CreateWindow, 可能会有直接找到的方法吧但是我对直接动调还是太不熟悉了, 只能一点点跑, 感觉要接近了, 这里就可以看到使用的是D3Dx9.
刚说完就找到了API断点设置工具, 捏马...
程序跑过42038A这个函数的时候卡死, 并且这时候已经画完了, 那我们回来步进函数, 从4201FF开始
到38A之后还是没有画出来, 可以猜测就在这附近完成的绘画. 其实这种题老套路都是遮罩啊, 位置之类的, 一般是要把flag的位置调到可见的地方, 之前KAaaSs有两道OPENGL类似的题, 我猜这个也是
到这儿的时候程序中再次卡死, 跟进去, 跟不进去, 我认为这里已经开始画了, 前面设置好了坐标.
去关注了一下刚刚D3dx9_43里的几个函数,发现D3DXMatrixTranslation这个函数很可疑, 它的参数是四个:pOut\x\y\z 第一个函数应该是(猜的) 设置摄像机角度, 第三个则是让Logo转起来.
那么问题来了, 这里的Translation到底画的是谁呢... 是Flare图标还是我们想要的flag呢?如果按我刚刚的推测, 是不是应该有两个绘画的行为, 把这个地方打个断点看看
Translation的四个参数应该是右到左压栈, 也印证了这个z是一个0x4316000的float, 这东西太大了看着就不像好东西, 我们直接进行一波改好吧
沃日, 这转的也太快了?
懒得改旋转速度了, 我直接进行一个摸奖,反正能看清的也不少
PS: 做完之后看题解.. 我晕, 这东西能ninjaripper直接提取出来看模型, 一把梭了