搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
喵喵爱编程
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
【大道至简】机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解(3)---预测问题:维特比算法(Viterbi Algorithm)详解及Python代码实现_【大道至简】机器学习算法之隐马尔科夫模型(hidden markov model, hmm)详解(2
2
UnityOSGB:为Unity引擎解锁OSGB格式的高效之旅
3
AI绘图软件Stable Diffusion 之本地安装
4
Git Fork后与源作者同步更新_fork仓库会推送到作者
5
ChatGPT之实现联网回答_gtp4
6
苹果手机怎么解屏幕锁_小米手机刷机第1步:解BL锁教程
7
理论1-10_下列函数头,正确的是( )。 分数: 2 a. def f(a = 1, b): b. def f(
8
火狐插件
9
电脑/笔记本分盘操作+查看内存容量情况(超实用)_电脑内存分盘
10
GitHub中文排行榜,帮助你发现高分优秀中文项目(二)-Java_优秀的github学习中文
当前位置:
article
> 正文
逆向工程 1_逆向工程(一):汇编、逆向工程基础篇
作者:喵喵爱编程 | 2024-07-24 17:16:57
赞
踩
逆向工程(一):汇编、逆向工程基础篇
逆向工程(一):汇编、逆向工程基础篇
汇编是逆向工程的基础
1.位是电脑数据量的最小单位,字节是最基本单位。其他还有字(16位),双字(24位),千字(1024字节),兆(1048576字节),电脑数据单位进制为 1024.
2.寄存器是电脑的数据储存位置。特别注意ESP,EBP,EIP.
AX是这个32位寄存器的名字,EAX的低16位部分被称作AX,AX又分为高8位的AH和低8位的AL两个独立寄存器。
3.寄存器大小分为i.单字节寄存器:
AL and AH
BL and BH
CL and CH
DL and DH
ii.单字寄存器,包含两个单字节寄存器。包括:通用寄存器,索引寄存器(指针寄存器),段寄存器,指令指针寄存器
iii. 双字(32位)寄存器:
2字=4字节=32位,EAX、EBX、ECX、EDX、EDI……
如果16位寄存器前面加了‘E’,就代表它们是32位寄存器。例如,AX=16位,EAX=32位。
4.标志寄存器,代表某种状态,注重Z-Flag(零标志),The O-Flag(溢出标志),The C-Flag(进位标志)。
ZF是破解中用得最多的寄存器(通常情况下占了90%),它可以设成0或者1。若上一个运算结果为0,则其值为1,否则其值为0。OF寄存器在逆向工程中大概占了4%,当上一步操作改变了某寄存器的最高有效位时,OF寄存器会被设置成1。进位寄存器的使用大概占了1%,如果产生了溢出,就会被设置成1。
5.段偏移:一个段是一本书的某一页:偏移量是一页的某一行。
6.栈:栈是内存里可以存放稍后会用到的东西的地方,临时存放,最后存入数据最先输出。
指令ADD(加):加法指令将一个数值加在一个寄存器上或者一个内存地址上。
AND (逻辑与) ,AND运算对两个数进行逻辑与运算。同真为真(1),否则为假(0)
CALL (调用):CALL指令将当前的相对地址(IP)压入栈中,并且调用CALL 后的子程序
CDQ:CDQ指令第一次出现时通常不好理解。它通常出现在除法前面,作用是将EDX的所有位变成EAX最高位的值。
CMP (比较):CMP指令比较两个值并且标记CF、OF、ZF
DEC (自减):dec用来自减1,相当于c中的–
DIV (除):IV指令用来将EAX除以除数(无符号除法),被除数通常是EAX,结果也储存在EAX中,而被除数对除数取的模存在除数中。
IDIV (整除):IDIV执行方式同div一样,不过IDIV是有符号的除法,idiv指令可以标记CF、OC、ZF。
IMUL (整乘):MUL指令可以把让EAX乘上一个数(INUL 数值)或者让两个数值相乘并把乘积放在目标寄存器中(IMUL 目标寄存器, 数值,数值)或者将目标寄存器乘上某数值(IMUL 目标寄存器, 数值)
INC (自加):INC同DEC相反,它是将值加1,INC指令可以标记ZF、OF
INT:INT 的目标数必须是产生一个整数(例如:int 21h),类似于call调用函数,INT指令是调用程序对硬件控制,不同的值对应着不同的功能。
LEA (有效地址传送):LEA可以看成和MOV差不多的指令LEA ,它本身的功能并没有被太广泛的使用,反而广泛运用在快速乘法中
MOV (传送):MOV指令将源数赋值给目的数,并且源数值保持不变
MUL (乘法):同IMUL一样,不过MUL可以乘无符号数。
NOP (无操作):这个指令说明不做任何事,所以它在逆向中运用范围最广
OR (逻辑或):语法:OR 目的数,源数,OR指令对两个值进行逻辑或运算
POP:POP指令将栈顶第一个字传送到目的地址。 每次POP后,ESP(栈指针寄存器)都会增加以指向新栈顶
PUSH:PUSH是POP的相反操作,它将一个值压入栈并且减小栈顶指针值以指向新栈顶。
REP/REPE/REPZ/REPNE/REPNZ:重复上面的指令:直到CX=0。ins必须是一个操作符,比如CMPS、INS、LODS、MOVS、OUTS、SCAS 或 STOS
RET (返回):RET指令的功能是从一个代码区域中退出到调用CALL的指令处。RET digit在返回前会清理栈.
SUB (减):SUB与ADD相反,它将源数减去目的数,并将结果储存在目的数中SUB可以标记ZF、OF、CF
TEST:这个指令99%都是用于”TEST EAX, EAX”,它执行与AND相同的功能,但是并不储存数据。如果EAX=0就会标记ZF,如果EAX不是0,就会清空ZF
XOR:XOR指令对两个数进行异或操作这个指令清空OF、CF,但会标记ZF
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/喵喵爱编程/article/detail/875946
推荐阅读
article
Github
疯传!史上最强!
BAT
大佬「
LeetCode
刷题
手册
」电子书开放下载了!...
优质资料_leetcode
刷题
手册
leetcode
刷题
手册
...
赞
踩
article
Promise
实现原理_
promise
的
原理...
本文深入探讨了
Promise
的
实现原理,包括其状态变迁、resolve和reject
的
角色、then方法
的
回调处理、异常...
赞
踩
article
Python
朴素
贝叶斯
(
Naive
Bayes
)
分类
_
python
朴素
贝叶斯
的意义...
Naïve
Bayes
分类
的核心是计算条件概率P(y|x),其中y为类别,x为特征向量。其意义是在x样本出现时,它被划...
赞
踩
article
Window
系统
安装
Redis
详细教程和
可视化
工具的
使用
_
windows
安装
redis
...
Window
系统
安装
Redis
详细教程和
可视化
工具的
使用
_
windows
安装
redis
windows
安装
redis
...
赞
踩
article
鸿蒙
南向
开发
实战:轻量系统-
编译
(基于
Hi3861
开发
板
)_
鸿蒙
系统
编译
如何查看支持
的
开发
板
...
DevEco Device Tool支持
Hi3861
V100
开发
板
的
源码一键
编译
功能........._
鸿蒙
系统
编译
如何...
赞
踩
article
【保姆级教程】
Linux
上
部署
Stable
Diffusion
WebUI
和
LoRA
训练,拥有你的专...
本文详细介绍了如何在
Linux
系统上
部署
Stable
Diffusion
WebUI
,首先介绍了
Stable
Diffu...
赞
踩
article
python
查询
Neo4j
多
节点
的多层
关系
_
neo4j
查询
多个
节点
之间的
关系
...
# -*- coding: utf-8 -*-from py2neo import Graph# 二维数组查找def f...
赞
踩
article
面向国内
开发者
免费!
字节
跳动发布“
豆包
MarsCode
”智能
开发工具
_
字节
跳动发布智能
开发工具
“
豆包
...
6 月 26 日,
字节
跳动在北京发布了基于
豆包
大模型打造的智能
开发工具
——
豆包
MarsCode
,面向国内
开发者
免费开放...
赞
踩
article
Java
后
端
面经精简(集合篇)
_
java
后
端
csdn
...
简易面试版
_
java
后
端
csdn
java
后
端
csdn
...
赞
踩
article
安卓
数据
恢复
篇 – 如何从
Android
恢复
已
删除
的
文件
_安卓3.2糸统删掉
的
文件
怎么找回...
数据丢失是
Android
手机上常见
的
严重问题。我们在
Android
手机上丢失数据
的
原因有很多。例如,您可能只想删...
赞
踩
article
Promise
的
使用
与
原理
实现
过程详解【附源码】
_
promise
原理
...
一、什么是
Promise
?
Promise
是目前 JS 异步编程
的
一种解决方案。从语法上讲,
Promise
是一个对象...
赞
踩
article
Android
Framework
音频
子系统(
13
)
音量
调节之基础_
setstreamvolume
...
1
音量
基础知识@1 四大类Volume
音量
master volume:设置它等于设置所有的stream volume和...
赞
踩
article
软件
测试
之-
测试用例
写作
规范_
软件
测试用例
编写规范...
软件
测试用例
得出
软件
测试用例
的内容,其次,按照
软件
测试
写作
方法,落实到文档中,两者是形式和内容的关系,好的
测试用例
不仅方...
赞
踩
article
Mac M1
安装
home
brew
步骤_
macbook
m1
安装
brew
...
Mac M1
安装
Home
brew
步骤_
macbook
m1
安装
brew
macbook
m1
安装
brew
...
赞
踩
article
Windows
下
怎么通过
ubuntu
和
ba
sh
运行源程序.
sh
文件
_
wsl
ubuntu
.
sh
文件
...
(或者直接在cmd
下
输入dism.exe /online/enable-feature/featurename:Micr...
赞
踩
article
【
机器
学习
之
分类
篇】一文读懂
机器
学习
分类
模型
——
分类
模型
构建
与性能评价(基于
分类
MNIST
数据
集中
的
...
前言本文章,主要是利用传统
的
机器
学习
方法
构建
传统
分类
器,
进行
分类
任务,虽然目前利用神经网络
的
方法相较于传统
机器
学习
效果更...
赞
踩
article
HarmonyOS
—低
代码
开发
中
使用
自定义
组件
_低
代码
平台
自定义
组件
...
1.右击基础
组件
(或
组件
组合),在弹出的菜单
中
选择。2.在弹出的对话框
中
输入
自定义
组件
名称,然后单击OK。List it...
赞
踩
article
opencv
如何读取图像、
视频
(基于
Python
语言)
_
vs
opencv
视频
识别图形
python
...
今天来讲下如何使用
opencv
的
Python
接口来做一些工作(因为
python
实在是太方便,没有那么繁琐的编译过程且极易...
赞
踩
article
半
监督
学习
在
异常
检测
中的
应用
与研究...
1.背景介绍
异常
检测
是一种重要的数据驱动的
应用
领域,它旨在识别数据中的
异常
点或模式,以帮助人们做出更明智的决策。
异常
检测
...
赞
踩
article
什么是
TCP
/
IP
协议
...
IP
协议
将HTTP请求封装成数据包,并为其分配源
IP
地址(你的计算机
IP
)和目标
IP
地址(http://www.exam...
赞
踩
相关标签
算法
数据结构
GitHub
LeetCode
js
es6
前端
机器学习
python
朴素贝叶斯
Naive Bayes
redis
数据库
缓存
harmonyos
华为
android
鸿蒙
驱动开发
OpenHarmony
linux
stable diffusion
人工智能
豆包大模型