目录
题目:
学到的点:
题目:
打了GDOUCTF的比赛(被暴打了hhh),学到很多新东西,这里总结一下
Diff的文件是ida数据库文件,选择i64或者idb文件进行Diff
打开附件,有两个文件,一个是ls-original一个是ls-patched,这种可以考虑使用bindiff工具比较文件修改的部分,这里引用大佬的一段话
分析过old.so,做了大量繁琐的逆向工程,比如自定义了很多数据结构、重命名了很多函数。现在有new.so,想充分利用old.so的已有逆向成果。比如,想从old.i64迁移一批名为”Private_*”的函数名到new.i64中。再比如,已经卸掉old.so中的过期时间检查,想快速定位new.so中匹配代码,对之进行静态Patch。二进制比较工具正是为解决此类需求而生的。
这种情况下就可以使用bindiff二进制比较工具。
工具下载地址:https://zynamics.com/software.html
我是用的是win11+IDA7.7+bindiff7,点开后可以直接下载bindiff7.msi,但是不要忘记勾选上面的框框,不然是没法下载的
具体下载流程可以参考https://www.cnblogs.com/lsdb/p/10543411.html
下载完成就可以在IDA中使用了,拿这题举个例子
Diff的文件是ida数据库文件,选择i64或者idb文件进行Diff
在使用bindiff之前需要将文件先在ida中打开,得到.i64文件。再用.i64文件进行操作
先打开patched.i64文件(即new.i64),再在Edit->Plugins->BinDiff (Ctrl-6)->Diff Database->选中old.i64
完成了就会显示这样的画面,显示四个窗口,作用分别如下(参考大佬文章)
Matched Functions :完全匹配的函数
Statics:匹配的一些数据
Primary unmatch: 初级不匹配
Secondary Unmatch :二级不匹配
Matched Functions窗口时看old文件与new文件相匹配程度,越绿代表匹配度越高,越红代表匹配度越低,可以在本题中找到不那么绿的那一栏,打开它
代码有点乱..与old文件进行相比可以看到多了对lmao进行异或运算,但是异或的值并不知道,看了大佬的wp知道可以用Cyberchef
得到了flag
学到的点:
Bindiff工具使用,需要i64文件,将old.i64与new.i64进行比较,可以找到不同的地方。具体使用参考:http://blog.nsfocus.net/bindiff/
Cyberchef的使用:https://gchq.github.io/CyberChef/,具体使用可以参考:https://www.secrss.com/articles/12449