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

在第三篇编译程序时候,要取消编译器优化,要不找不到 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)通过调用关系,如果能确定它的调用函数,或者它调用的函数,也能定位到要查找的函数。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值