微信逆向分析(一)——逆向分析的原理

article/2025/9/19 1:34:17

逆向的简单理解

正向开发,是先写代码,再编译成软件。而逆向分析,到手的只有软件。从软件入手,推测对应的代码,需要了解一下编译之后的软件是怎么跑起来的。

软件运行过程

1、软件加载到内存。

2、CPU读取内存的指令。

3、根据指令,再读取数据,进行运算。

4、运算的过程,数据是存在CPU里面的寄存器。

5、运算过程,用到另一个功能,需要保存当前环境,存到堆栈。

代码语言的变化

1、C/C++语言:高级语言,给人看的

2、汇编语言 :低级语言,给机器用的

(逆向分析,接触多是汇编语言)

软件加载过程

磁盘 >>内存>>寄存器

1、代码编译成软件,先放在磁盘(C盘,D盘这些)

2、开始运行的时候,就会加载进内存(平时说的内存条)

3、真正运行的是在CPU(也就是所谓的芯片),里面存数据的地方叫寄存器。

软件的构成

1、软件的外部

包含:一个主要程序(exe后缀),多个独立库(dll后缀)。

内存一开始加载exe,有必要的时候,exe再把dll加载进内存来。

exe或者dll在内存的开始位置,叫做基址。(每次加载,随机放置,基址不固定)

exe或者dll里面和基址的距离,叫做偏移。(每次加载,内部不变,偏移固定)

打个比喻:exe和dll相当小尺子,要放在内存这个大尺子上。

大尺子上只要有空位,小尺子就可以随便放。

小尺子不管怎么放,里面的刻度固定的。

2、软件的内部

软件 = 代码 + 数据

数据 = 静态数据 (数据不会变)+ 动态数据 (数据会改变)

动态数据 = 全局数据 (多个函数共用)+ 局部数据(单个函数私有)

代码和静态数据在软件运行过程不会改变,位置固定,可以方便使用。

全局数据,因为是共用的,位置固定,也可以方便使用。

所以这三种的偏移是不变的。

内存地址 = 基址 + 偏移。

基址可以用GetModuleHandle得知。

偏移又是不变的,内存地址也就可以算出来了 。

而偏移会变化的局部数据,就不能直接算出来了。

局部数据,是软件运行过程中,临时生成又销毁的。

所以要获取局部数据,只能在软件的运行过程进行拦截。(也就是所谓的HOOK)

逆向分析目的(重点)

逆向分析的两个目的

1、调用功能

2、获取数据

通过上面的原理可以知道

1、调用功能

代码是固定的,找到偏移,就可以调用。

2、获取数据

对于全局数据,找到偏移,就可以得到。

对于局部数据,需要拦截,才可以得到 。

(拦截的是代码,所以要找代码的偏移)

所以,逆向的核心点,是找固定的偏移。


http://chatgpt.dhexx.cn/article/MId0ABdq.shtml

相关文章

【JavaScript 逆向】网易易盾滑块逆向分析

声明 本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除! 案例目标 验证码:aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc 以上均做了脱敏处理,Base64 编码及解码方式&#xf…

【JavaScript 逆向】今日头条 jsvmp,_signature 参数分析

前言 现在一些网站对 JavaScript 代码采取了一定的保护措施,比如变量名混淆、执行逻辑混淆、反调试、核心逻辑加密等,有的还对数据接口进行了加密,这次案例是通过补环境过 jsvmp。 声明 本文章中所有内容仅供学习交流,相关链接…

【JavaScript 逆向】拼多多 anti_content 参数逆向解析

前言 现在一些网站对 JavaScript 代码采取了一定的保护措施,比如变量名混淆、执行逻辑混淆、反调试、核心逻辑加密等,有的还对数据接口进行了加密,这次案例是通过补环境过加密。 声明 本文章中所有内容仅供学习交流,相关链接做…

CTF逆向基础

更多资源请进入:https://github.com/SycloverTeam/SycRevLearn 查看。 1 IDA定位main函数 运行T1.exe。 将可执行程序放入IDA中,并查找字符。 双击。 按F5,进入代码。 可以对函数进行重新命名,此时也已经得到了flag。 2 …

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶…

逆向--基础知识篇

基础知识 可执行文件 计算机中可以被直接执行的程序被称之为可执行文件,可执行文件中是由指定操作系统的可执行文件格式规范与当前CPU机器指令码组成。不同的操作系统、不同的CPU之间的可执行文件都可能存在或多或少的差异。本篇主要以Windows操作系统、x86架构的…

逆向入门到入土

第一章 概述 学了几个月的逆向,记得10月份国庆节刚开始学的时候 感觉找flag蛮有意思,看着一个up主的视频,那时候c语言也没怎么学,所以就单纯他怎么做,我自己怎么做,后面去一些ctf靶场做了几道题&#xff0…

BNU1064:人品问题

“人品既不能被创生,也不能被消灭。只能从一个人转移到另一个人,从一个层面转化到另一个层面,而在转移和转化的过程当中,人品的总和保持不变。” 至此引出人品学(Characterics)三定律: 第一定律:即人品守恒…

开发者的人品问题

程序员都知道:绝大多数编程中的问题,最终都是自己的人品问题。当遇到奇怪的问题时,我们总是喜欢怀疑系统、怀疑编译器、怀疑网络、怀疑硬件……就是不愿意怀疑自己的人品。熬过几个不眠之夜后,最终还是发现自己的代码存在人品问题…

A. 人品问题

A. 人品问题 Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name: Main Submit Status PID: 1064 Font Size: - “人品既不能被创生,也不能被消灭。只能从一个人转移到另一个人,从…

BNU 1082 人品问题

这个题我是1A 突然觉得自己好叼 #include<bits/stdc.h> int main() {printf("25\n");return 0; }

人品问题

Description 网上出现了一种高科技产品——人品测试器。只要你把你的真实姓名输入进去&#xff0c;系统将自动输出你的人品指数。yzx不相信自己的人品为0。经过了许多研究后&#xff0c;yzx得出了一个更为科学的人品计算方法。这种方法的理论依据是一个非常重要的结论&#xff…

人品差的人,开口闭口都是这些话,一定不要深交!

说话之道&#xff0c;也是为人之道。 言语是思想的发声&#xff0c;从一个人的话里&#xff0c;往往可以听出其内心的声音。 从而初步判断出一个人的人品如何&#xff0c;是否值得交往。 那些人品差的人&#xff0c;开口闭口都离不开以下三种话&#xff0c;身边若有此类人&a…

adb logcat 命令行用法

本文为转载。 作者 :万境绝尘 转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 adb logcat --help 命令, 就可以显示该命令的帮助信息; [plain] view plain copy octopusoctopus:~$ ad…

java logcat_logcat -- 基本用法

1.Log类是一个日志类&#xff0c;我们可以在代码中使用logcat打印出消息 常见的日志记录方法有&#xff1a; v(String,String) --verbose 显示全部信息 d(String,String) -- debug 显示调试信息 i(String,String) -- information 显示一般信息 w(String,String) -- warning 显…

Logcat使用

目录 一、Logcat窗口 二、过滤 logcat 消息 三、Logcat的日志级别 四、设置日志信息颜色 一、Logcat窗口 Logcat在哪里&#xff1f;我都是直接点击工具栏中的Logcat图标。 Logcat窗口是用来查看应用日志的啦&#xff0c;我把每个部分标注了一下。 二、过滤 logcat 消息 一…

[Android]Logcat调试

Android采用Log(android.util.log)工具打印日志&#xff0c;它将各类日志划分为五个等级。 Log.e 打印错误信息 Log.w 打印警告信息 Log.i 打印一般信息 Log.d 打印调试信息 Log.v 打印冗余信息 不同等级的日志信息&#xff0c;在日志栏中会以不同颜色和等级(E、W、…

java logcat_使用 Logcat 写入和查看日志

Android Studio 中的 Logcat 窗口会显示系统消息,例如在进行垃圾回收时显示的消息,以及使用 Log 类添加到应用的消息。此窗口可以实时显示消息,也可以保留历史记录,因此您可以查看较早的消息。 要仅显示感兴趣的信息,您可以创建过滤器、修改消息中显示的信息量、设置优先级…

adb 抓取logcat 日志

&#xff08;1&#xff09;确保计算机里面有以下三个文件&#xff0c;才能抓取logcat日志&#xff08;只需要这三个文件就可以了&#xff09;。如果你的计算机有android sdk&#xff0c;以下三个文件会在你的sdk下的platform-tools文件夹里面。如果需要打印logcat日志的计算机没…

新版logcat最全使用指南

前言&#xff1a; 俗话说&#xff0c;工欲善其事&#xff0c;必先利其器。logcat是我们通过日志排查bug的重要武器之一。从某个版本开始&#xff0c;logcat改版了&#xff0c;改版之后&#xff0c;也许某些人觉得不太习惯&#xff0c;但是如果稍微学习下之后&#xff0c;就发现…