Windows逆向分析入门(六)——实战篇(用户信息)

前言

  这一篇,开始实战。用到找偏移的第一个方法:内存搜索。目的是获得用户信息。

 

一、找偏移

1、分析

  用户信息,属于获得数据。

  全局数据搜索,局部数据拦截。

  对于经常用到,又不怎么变动的数据,用全局变量会比较方便。

  用户信息,基本不会变动,也很多地方会用到,猜测是用全局变量存储。

 

2、方法

  对于全局变量,用CE进行内存搜索,看能不能找到。

 

3、验证

  1、看下自己的登陆信息

  

  

  2、用CE搜索用户名

  搜索结果有绿色的,说明偏移是固定。

  

 

  3、看下内存附近信息

  也有省份这些信息,说明个人信息是存在一起的

   

  

 

  4、结论

    个人信息,确实是全局数据,可以直接搜索得到。

 

  5、OD查看更多信息

    用OD,可以更方便的查看更多的内存数据

    在CE中搜到的内存地址是5D49498C,在OD中可以看到

 

    1、dc 内存地址,能看到地址附加的文本

     

 

    2、dd 内存地址,能看到地址附加的指针所指向的文本(文本较长的情况,会用到指针)

    往下翻翻,能找到头像的指针和WXID的指针

     

     

 

  6、计算偏移

    偏移 = 内存地址 - 模块基址

    内存地址已经知道,看下模块基址是什么?

    在CE中可以看出,用户名的数据所在模块是WeChatWin.dll

    

  

  OD可以看到WeChatWin.dll的基址是5BDE0000

  Executable modules, 条目 8

  基址=5BDE0000

  大小=01946000 (26501120.)

  入口=5CB34A63 WeChatWi.<ModuleEntryPoint>

  名称=WeChatWi

  文件版本=2.9.0.123

  路径=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll

   

 

  对应的偏移就可以计算出来了

    用户名        5D49498C - 5BDE0000  =  16B498C

    WXID指针 : 5D494D90 - 5BDE0000  =  16B4D90

    其他信息同理,自行计算下

 

二、写代码

1、外部工具

  1、新建MFC项目

  

 

  

 

  2、编写代码

  外部读取的函数是ReadProcessMemory

  代码有详细备注,仔细阅读应该能看懂

   

  

 

2、内部工具

  1、新建DLL项目

   

  

  2、编写代码

  

   

  

  3、用OD把DLL注入到目标软件

   

  

  4、运行结果

  

 

工具和教程,放群里(163419350),方便交流。

实战代码也会放在github:https://github.com/KongKong20/WeChatPCHook

 

posted @ 2020-06-27 11:38  万物归空  阅读(4624)  评论(0编辑  收藏  举报