首页
社区
课程
招聘
[原创]pc版微信 数据库备份(4)分析自己的例程,找到sqlite函数的特征码,定位微信中函数的位置
发表于: 2021-1-15 14:25 5141

[原创]pc版微信 数据库备份(4)分析自己的例程,找到sqlite函数的特征码,定位微信中函数的位置

2021-1-15 14:25
5141

在第三篇编译程序时候,要取消编译器优化,要不找不到 sqlite_open这个函数,因为都被内联优化了,直接调用了 openDatabase 这个函数。
取消编译优化设置如下:


然后选确定,在生成项目

以定位 sqlite_open 函数为例

打开 testSqlite模块,定位到 sqlite_open
程序是我们自己写的,定位到这个很容易
通过查看自己写的源码,我们在testSqlite模块中搜索字符串 chatmsg.db 就可以找到调用 sqlite_open函数的附近位置。

回车键 跟进这个函数

观察这个函数,找出能代表这个函数特征的指令序列(尽可能通过搜索后,减少匹配的序列)我们去ida(打开weChatWin.dll的ida)中搜索这个
mov ecx,dword ptr ss:[ebp+8]
push 0
push 6 对应的指令
8B 4D 08 6A 00 6A 06 E8(在ida中 可以按快捷键 ALT + b,打开搜索二进制搜索框)

点ok按钮

双击打开查看,对比一下,看看是不是我们要找的函数

这样我们就做到了 做尽可能少的逆向工作,就可以快速定位要定位的函数。

其他的函数定位 同样的道理。
因为,不同的编译器,编译时选择的连接选项不一样,也会造成生成出来的特征码不一样,这时候,我们可能通过特征码定位不到,我们还可以采用以下方式来定位
(1)可以同过已知函数和要查找函数的相对位置(要查找的函数离已知函数相隔几个函数)来定位。
(2)通过关键的字符串的位置,来定位函数。
(3)通过调用关系,如果能确定它的调用函数,或者它调用的函数,也能定位到要查找的函数。

这篇解决了如何快速定位函数,找到了关键函数,下一步,就是写一个外挂程序,实现数据库的备份。

下一篇:外挂程序的编写

pc版微信 数据库备份(5)外挂程序编写确定hook位置

上一页


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-1-18 09:26 被freeGod编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
2

感谢分享,学习了。

最后于 2021-1-15 16:17 被supperlitt编辑 ,原因:
2021-1-15 16:17
0
游客
登录 | 注册 方可回帖
返回
//