Updated Home (markdown)

ttttupup 2024-08-19 23:21:30 +08:00
parent 130c332727
commit 858ed0c2b5

22
Home.md

@ -66,4 +66,26 @@ sqlite3_close函数特征最明显直接搜索字符串 "unable to close due
测试了一下效果还可以。 测试了一下效果还可以。
![image](https://user-images.githubusercontent.com/31303661/228407983-cc594b44-a9fe-4c52-91a3-29f88a058c42.png) ![image](https://user-images.githubusercontent.com/31303661/228407983-cc594b44-a9fe-4c52-91a3-29f88a058c42.png)
# ghidra 脚本
## sqlite 函数定位脚本
dev-3.9.11.25 分支 Sqllite3Script.java 脚本通过先确定sqlite3_api_routines位置其余函数可以直接通过脚本定位。
sqlite 版本为3.40.
FindSqliteCloseScript.java 脚本是定位sqlite_close函数的脚本,通过该函数关键字搜索相关引用函数,然后根据其他版本定位的函数的fid进行比较可以定位。
然后再确定sqlite3_api_routines的偏移。
因为sqlite的函数没有进行混淆,x64版本的fid基本上不会有变化所以多版本可以通用。
## 函数命名
NamedScript.java 通过定位wechat内部日志函数重命名其他函数。
通过观察可以发现wechat内部函数都会有日志输出以此可以推断该函数的原始名称就是该函数的第4个参数。
![image](https://github.com/user-attachments/assets/6593d78d-b129-4d76-9f04-e8f1fb547b60)
所以按照此规律,可以大大降低逆向难度,还原原始函数名。每个版本的逆向分析成功可以积累到下一个版本使用。
## 常用函数偏移
FindCallScript.java 先导入xx.fid相关数据库内容然后才能执行。
主要是利用以前分析过的结果和已经分析出来的结果直接定位相关函数的偏移。因为wechat有些功能只要没有更新大概率函数的fid不会改变所以可以降低重复工作。
![image](https://github.com/user-attachments/assets/2840a171-b056-494b-a315-f5b3a9f8f852)
ghidra 脚本的位置和使用方式可以参考ghidra文档。