在利用Ida分析Anti-jap(这是啥名字,因为你知道的那个名字是敏感词)时,记录几个基础问题,以备不时之需。
自动生成伪代码
ida的输出窗口默认显示为汇编代码,如下图所示:
这时候你按下
F5,伪代码出现了。见下图(图中好多变量函数已经被我改了名字):
Anti-jap 在ida中的加载问题。
由于Anti-jap和windows10兼容问题,使用ida直接启动anti-jap就会花屏。这时候需要一个辅助工具。它的名字是D3DWindower。等待D3DWindower启动完Anti-jap后,使用attach to process...功能即可进入调试
窗口同步
利用上下文菜单里的synchronize with菜单项与其他窗口同步
字符串编码问题
ida默认情况下无法正常显示汉字。把光标停留在需要转换字符串的变量名上,按快捷键Alt+A,在弹出的对话框里选择合适的字符串编码。
010editor和ida功能分割
010editor在未知数据详细字段意义时,利用ida进行字段大小切割。并根据其顺序,在010editor模板编辑中将其命名为padxx名称。然后将所有ida对应字段的变量命名成这个具有标识意义的名字。而不是一堆无意义的dword_072DE9A的名字。
进度
dlz.exe逆向分析进度。函数命名进度 ,220/749。
已经命名全局变量995,全部未知,预估完成
。
老图片的查看方式
可以使用工具Imagine,这是一个安装完占用大小都不到一个软大小的看图软件。支持众多古董级别的图片格式。
定义结构体
首先打开IDA,使用快捷键Shift+F1打开本地类型窗口。按下insert快捷键,弹出类型声明窗口,在该窗口的编辑区域以C语言语法定义结构体。然后就可以输入定义的结构体。难受的是,它的定义和010editor略有不同,难受。现在正在把变量注释改成结构体定义中。
强烈推荐插件
ipyida把IPython功能通过QtConsole控件集成到ida了。终于可以不用忍ida查看数据的复杂操作了,想看啥,直接在IPythonConsole里输入命令就可以了。
可以在输出窗口里使用以下脚本安装
import subprocess
subprocess.check_call(['python.exe', '-m', 'pip', 'install', 'ipyida'])
你也可以到ipyida官方网站查看使用方法 如果你想了解ida的python接口,可以在这里查看python接口
进度
可视数据已接近尾声。完成度接近。一开始进入分析剧情字段(字节级),主要存放在fight.dat里面(长度0x2000,47组)。虽然数据量不多,但是由于这些数据无法可视化,只能靠大量阅读代码猜测其含义,进度应该进展缓慢。
如果你对数据解析anti-jap感兴趣,你可以到这里看代码