From 858ed0c2b598496e8662e9e205b2bfbe4b0a61ef Mon Sep 17 00:00:00 2001 From: ttttupup <31303661+ttttupup@users.noreply.github.com> Date: Mon, 19 Aug 2024 23:21:30 +0800 Subject: [PATCH] Updated Home (markdown) --- Home.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Home.md b/Home.md index 3f5fbd6..2204d29 100644 --- a/Home.md +++ b/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) +# 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文档。 +