-
-
[原创]pc版微信 数据库备份(4)分析自己的例程,找到sqlite函数的特征码,定位微信中函数的位置
-
发表于:
2021-1-15 14:25
5141
-
[原创]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)通过调用关系,如果能确定它的调用函数,或者它调用的函数,也能定位到要查找的函数。
这篇解决了如何快速定位函数,找到了关键函数,下一步,就是写一个外挂程序,实现数据库的备份。
下一篇:外挂程序的编写
pc版微信 数据库备份(5)外挂程序编写确定hook位置
上一页
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-1-18 09:26
被freeGod编辑
,原因: