25.解密被加密的数据库文件
Last updated
Last updated
进来有一个个人项目的灵感,于是找到了有提供类似功能的产品,准备逆向研究一波。拿到了IPA包,也找到了数据库文件。但是在准备看下数据库文件的时候遇到了问题。
数据库加密了🤷♂️
作为一个秃头的逆向工程师(并不是),我们怎么能轻言放弃呢?
确定本次逆向目标:
[X] 获取数据库密码
[X] 清除数据库密码
开森~都完成了👌
先看看IPA中framework文件夹中有什么吧
难道用了 CoreData
?我们再进一步分析
我们使用 Hopper
进行分析,将 IPA
中的可执行文件(MachO
)丢进 Hopper
。
哦吼~ 很明显用的 FMDB
。
查看 FMDB
的 API
寻找切入点。找到了 - (BOOL)setKey:(NSString*)key;
,准备 Hook
。
砸壳、重签名这里就不再赘述,不是本文的重点。
下面使用 Logos
简单进行 Hook
。
运行后在应用中触发数据库操作,日志输出:
成功拦截到了密码👏
我们先将数据库文件拷贝出来一份。
使用我的 小工具-RemoveDataBasePassword
即可获取无密码的数据库文件了~
获取移除密码的数据库文件。就可以正常打开了
如果有帮助到你,留下一颗小星星吧⭐️~
将你的数据库文件拖进工程
修改 YourDataBasePassWord
为密码
修改 YourDataBaseName
为你的数据库文件名称
运行程序,模拟器即可
当看到屏幕出现 Click
点击屏幕
查看 Log,就可以获取路径
Enjoy it!
我一直用的 Navicat
来查看数据库的,但是打开移除密码的数据库时报错了。
虽然报错了,其实没问题。
双击 main,就可以继续访问数据了。
整个研究的过程还是比较顺利的,同时也提醒了自己:
如果本地数据库信息比较重要的话,仅仅为数据库添加密码时远远不够的
对于懂一些逆向的玩家来说还是很容易就能获取到的
感觉也是时候和大家分享一下一些防护手段了
欢迎点赞、评论、交流