首页 > 其他分享 >滴水逆向笔记系列-c语言总结2-10.变量-11.if逆向-12.正向基础

滴水逆向笔记系列-c语言总结2-10.变量-11.if逆向-12.正向基础

时间:2024-03-14 13:34:59浏览次数:20  
标签:逆向 12 10 int else ebp ... 跳转 全局变量

第十课 c语言3

1.编码

ASCII

标准的ASCII编码只需要七位,第八位在拓展ASCII编码使用
image.png
image.png

GB2312

image.png
image.png

2.局部变量和全局变量

下面代码输出结果为1111(x=11改变了全局的x)
image.png
452136177.jpg
452138067.jpg

第十一课 c语言4

1.内存图

image.png

2.逆向参数个数

472327817.jpg

3.简单逆向if代码

472363432.jpg

4.if...else...反汇编判断

image.png

  • 跳转执行一部分代码,不跳转则执行另外一部分代码
  • 第一个jxx命令跳转的地址前面有一个jmp,则可以判断是if...else...语句

练习示例

image.png

5.if..else if....else if..反编译判断

image.png

  • 当每个jxx命令跳转指令要跳转的地址前面都有jmp命令
  • 这些jmp指令跳转的地址都是一样的
  • 如果某个分支没有条件判断,则为else部分

6、循环反汇编

for循环

image.png

while循环

image.png

do...while循环

image.png

作业

image.png
image.png

1、ebp+8,ebp+c
2、ebp-4
3、[004225c4]
4、如果[ebp+8]大于[ebp+c],则跳转到00401064,否则[ebp+c]与[ebp-4]相加,把结果放入全局变量[004225c4]
5、
image.png
1、分析参数
[ebp+8]a、[ebp+c]b
2、分析局部变量
[ebp-4]x、[ebp-8]y
3、分析全局变量
[004225c4]c
4、功能分析
x=c,y=2,若a>=b则y++,若a>=b则c=x+y,则否则c=y,
5、返回值分析
全局变量被修改
6、还原成c

int c;
int function(int x,int y)
{
	int x = c;
    int y = 2;
    if(a>=b)
    {
        y++;
    }
    if(a>=b)
    {
        c = x+y;
    }
    else
    {
        c = y;
    }
}

image.png
1、分析参数
[ebp+8]x、[ebp+c]y、[ebp+10]i
2、分析局部变量
[ebp-4]a、[ebp-8]b、[ebp-c]c
3、分析全局变量

4、功能分析
a=0,b=1,c=2,若x<=y,a=b-1且跳到00401123,否则(若y>=i则a=c+1且跳转00401123,否则(若x>i则a=b+c且跳转00401123,否则))最后00401123地址是return a+1
5、返回值分析

6、还原成c

int function(int x , int y , int i)
{
	int a = 0;
    int b = 1;
    int c = 2;
    if(x<=y)
    {
        a=b-1;
    }
    else if(y>=i)
    {
        a = c + 1;
    }
    else if(x>i)
    {
        a = b + c;
    }
    else
    {
        a = b + c - 1;
    }
    return a + 1;
}

http://lihuaxi.xjx100.cn/news/1334730.html?action=onClick

第十二课 c语言5(正向基础)

1.类型转换(movsx,movzx)

小转大

image.png

  • movsx使用符号位先填上,再把数据传过去
  • movzx使用0先填上,再把数据传过去

image.png
image.png
image.png
image.png
image.png
image.png

大转小

image.png
高位会丢失

表达式

  • 运算中表达式会以最大宽度存放数据

image.png

  • 当表达式同时存在有符号数和无符号数时,表达式的结构将转换成无符号数

image.png

疑点

image.pngimage.pngimage.png
海哥这里讲乱了,是因为%d是有符号输出,想要输出无符号要用%u

2.循环

  • for循环执行顺序

image.png
注:循环变量放在里面和外面的区别
image.png

作业

尝试运行后解释其运行结果
1、
image.png
从ebp-14开始存,到ebp-4是数组最后一个值,越界一个数组将存到ebp,越界两个数组将存到ebp+4,也就是eip的地址
-331353660.jpg
2、
image.png

image.png
2、image.png

标签:逆向,12,10,int,else,ebp,...,跳转,全局变量
From: https://www.cnblogs.com/xiaoxin07/p/18072654

相关文章

  • SMK20-12255保护测控装置电源板:功能特性与广泛应用解析
    SMK20-12255保护测控装置电源板:功能特性与应用解析SMK20-12255保护测控装置电源板是一种专用于电力系统的高性能电源供应与监测控制设备。它以其稳定可靠的电源供应、精准实时的电力参数监测以及快速响应的保护机制,为电力系统的安全稳定运行提供了重要保障。一、功能特性高......
  • 滴水逆向笔记系列-7.堆栈图-8.c语言反汇编-9.数据类型
    第七课堆栈图1.函数函数的入口汇编中的函数函数有入口出口,但不一定有返回值和参数2、堆栈windows堆栈:什么是堆栈平衡:第八课c语言分析这段代码的反编译有时候跟反汇编不一定要进函数看,有时候从上下文就能大概猜出函数的作用第九课c语言21、什么是裸函数可以看到......
  • 04 games101-变换(模型、视图、投影)
    04变换(模型、视图、投影)MVP变换MVP变换用来描述视图变换的任务,即将虚拟世界中的三维物体映射(变换)到二维坐标中。MVP变换分为三步:●模型变换(modeltranformation):将模型空间转换到世界空间(找个好的地方,把所有人集合在一起,摆个pose)●摄像机变换(viewtranformation):将......
  • 06 games101-光栅化(深度测试与抗锯齿)
    06光栅化(深度测试与抗锯齿)从采样分析走样采样的对象:●在位置上采样——照片●在时间上采样——视频以下副标题均是在时域上分析。采样的瑕疵(Artifacts)Artifacts(Erros/Mistakes/Inaccuracies)●锯齿●摩尔纹●车轮效应●…走样的原因信号频率太快,采样太......
  • 05 games101-光栅化(三角形的离散化)
    05光栅化(三角形的离散化)三角形三角形的性质和优点:●最基础的多边形●其他图形可以拆解为三角形●三角形内一定是平面●内外的定义很明确●定义三个顶点后,三角形内可以插值光栅化(Rasterization)光栅化关键:判断一个像素和三角形的位置关系(像素中心点与三角形的位......
  • GEE C12 Filter,Map,Reduce
    目录一、Filter二、Map三、Reduce一、Filter1.1 FilterDate 1.用法ImageCollection.filterDate('2010-01-01','2010-01-01')//varimgCol=ee.ImageCollection('LANDSAT/LT05/C02/T1_L2');//HowmanyTier1Landsat5imageshaveeverbeenc......
  • Windows10, 11上,您可以使用以下PowerShell命令来启用Hyper-V功能组件 Windows server 2
    Windows11上,您可以使用以下PowerShell命令来启用Hyper-V功能组件:powershellCopyCodeEnable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-All这个命令将启用所有与Hyper-V相关的功能组件。请确保以管理员权限在PowerShell中运行此命令。执行以上命令后,系......
  • 滴水逆向笔记系列 - 4.内存地址_堆栈-5.标志寄存器-6.JCC命令
    第四课内存地址_堆栈内存地址db与dd命令db:d表示查找,b表示bytedd:d表示查找,d表示dworddb命令在数据区找出目的内存地址,发现数据区内和堆栈区显示的是相反的反汇编窗口和寄存器窗口的都是从高位到低位,数据区反之(比如数据0x12345678,12是高位,8是低位)所以0012FFDC这块内存(1字节)......
  • 滴水逆向笔记系列-1.进制-2.数据宽度_逻辑运算-3.通用寄存器_内存读写
    第一课进制这节课讲进制计算的核心就是查表例:3+5,就是从上表的3开始往后数五个数,10例:46则是看作6+6+6+6,6+6由上表可知为14,14再往后数12个数得出为46=30八进制复杂计算(文字比较难说明,但是大致还是和我们十进制的计算方式一样,只是九九乘法表换成上面三张表作业1.成立。可以以5......
  • 10.缓存
    1.常见的缓存策略有哪些,如何做到缓存(比如redis)与DB里的数据一致性,你们项目中用到了什么缓存系统,如何设计的。缓存策略:Cache-Aside:最常见的缓存策略,当客户端请求数据时,程序会检查缓存中是否存在数据,若存在缓存命中(CacheHit),若不存在(CacheMiss)则从数据库中查询数据并存储在缓......