OD & CheatEngine
- OD
- 寻找基址
- 附加进程
- 文件->附加->选择要附加的进程
- 附加后是暂停的状态,之后点击“运行”按钮,可以开始运行;
- 计算头像的基址
- 通过 CE 获得 DLL 基址 5FF10000 后,再通过 OD 查到头像的地址 6117DBE4,然后二者相减后可以计算偏移值为 126DBE4;
- 附加进程
- 使用方法
- t 按钮可以查看所有进程
- c 按钮可以回到主界面;
- b 按钮可以进入断点界面
- 在断点界面,可以使用空格键切换断点的启用与否;
- 在 command 的输入框中,可以通过 dd + 内存地址来定位,dc 和 du 功能一样,只是数据解析的格式不同,当显示中文字符时可能会用到;
- F2 快捷键可以用来在代码区中设置断点
- 寻找基址
- CE
- 三个按钮,最左边的那个指打开一个进程,类似于 OD 里面的附加功能
- 打开进程后,标题栏会显示进程名称和内存地址;
- 通过 scan 按钮,可以搜索输入框中的值,支持多种格式,常用的是 String 格式;
- 如果要搜索微信窗口界面的内容,需要勾选 UTF-16,即眼睛看得到的;如果不勾选,则是搜索内存里面的内容,而不是界面上的内容;
- 搜索出来的结果中,如果地址是绿色的,则表示它是基址;黑色的则是动态的;
- 基址是通过模块地址加上偏移之后计算出来的;
- WeChatWin.dll+126D91C = 6117D91C
- dll 的基址可以通过 6117D91C - 126D91C 反算得出;但更快的办法是在 CE 里面直接用按钮 Add Address Manully 打开窗口,然后输入 dll 名称即可获得,此处为 5FF10000
- 使用 Memory View 按钮可以打开浏览内存的窗口
- 使用 ctrl + G 可以跳转到指定的地址位置
- 通过跳转到指定位置,可以查看该地址附近的其他内容,因为有时候有些内容是相邻存储的;
- 其他信息
- 有些 wxid 如果是自动生成的,则可能会使用指针存储;
- 地址信息
- DLL 基址:5FF10000
- 昵称偏移:WeChatWin.dll+126D91C
- 头像偏移:WeChatWin.dll+126DBE4
- 长度需要200才放得下
- ID 偏移:WeChatWin.dll+126D8A4
- 如果是自动生成的ID,该地址存的是指针,需要加个判断,根据情况取值;
- 手机偏移:WeChatWin.dll+126D950
- 省份偏移:WeChatWin.dll+126DA08
- 城市偏移:WeChatWin.dll+126DA20
- 账号偏移:WeChatWin.dll + 126D938