攻防世界----->Replace

embedded/2024/12/23 2:07:13/

前言:做题笔记

下载 查壳。

upx32脱壳。

32ida打开。

先运行看看:

没有任何反应?

猜测又是 地址随机化(ASLR)---遇见过。

操作参考:

攻防世界---->Windows_Reverse1_dsvduyierqxvyjrthdfrtfregreg-CSDN博客

然后可以正常运行了。

ida分析:

main:

跟进 encode看看;


 

分析:

很妙啊~(兴奋,通过溢出取值,实现变量表( 奇->偶 ),)

 看不明白直接看内存:(记得按a)

(这是一张表。)

通俗:

          v8 = 表的偶数位

        v10 = 表的奇数位

观察:算法比较独立,发现没有? 

突破点:

因为它的计算与传入的 a1(input) 没有任何关联,所以值是可以进行计算的。

诺:

可以计算。

没必要去,硬 v6 v7的值 >>>v5>>>a1[i] ——没必要。。思路最重要。

正向求解简单很多。因为(v11 + v12) ^ 0x19 的值(已知)

爆破v5(input)就好了 

完整代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main()
{int i; // edxchar v5; // alint v6; // esiint v7; // edichar v8; // alint v9; // eaxchar v10; // clint v11; // eaxint v12; // ecxunsigned char table[100] = "2a49f69c38395cde96d6de96d6f4e025484954d6195448def6e2dad67786e21d5adae6";//表unsigned char byte_4021A0[300] =// CMP的数组{99, 124, 119, 123, 242, 107, 111, 197,  48,   1,103,  43, 254, 215, 171, 118, 202, 130, 201, 125,250,  89,  71, 240, 173, 212, 162, 175, 156, 164,114, 192, 183, 253, 147,  38,  54,  63, 247, 204,52, 165, 229, 241, 113, 216,  49,  21,   4, 199,35, 195,  24, 150,   5, 154,   7,  18, 128, 226,235,  39, 178, 117,   9, 131,  44,  26,  27, 110,90, 160,  82,  59, 214, 179,  41, 227,  47, 132,83, 209,   0, 237,  32, 252, 177,  91, 106, 203,190,  57,  74,  76,  88, 207, 208, 239, 170, 251,67,  77,  51, 133,  69, 249,   2, 127,  80,  60,159, 168,  81, 163,  64, 143, 146, 157,  56, 245,188, 182, 218,  33,  16, 255, 243, 210, 205,  12,19, 236,  95, 151,  68,  23, 196, 167, 126,  61,100,  93,  25, 115,  96, 129,  79, 220,  34,  42,144, 136,  70, 238, 184,  20, 222,  94,  11, 219,224,  50,  58,  10,  73,   6,  36,  92, 194, 211,172,  98, 145, 149, 228, 121, 231, 200,  55, 109,141, 213,  78, 169, 108,  86, 244, 234, 101, 122,174,   8, 186, 120,  37,  46,  28, 166, 180, 198,232, 221, 116,  31,  75, 189, 139, 138, 112,  62,181, 102,  72,   3, 246,  14,  97,  53,  87, 185,134, 193,  29, 158, 225, 248, 152,  17, 105, 217,142, 148, 155,  30, 135, 233, 206,  85,  40, 223,140, 161, 137,  13, 191, 230,  66, 104,  65, 153,45,  15, 176,  84, 187,  22};i = 0;//控制循环 while (1){v8 = table[2 * i];if (v8 < 48 || v8 > 57)v9 = v8 - 87;elsev9 = v8 - 48;//对 表偶数位的加密v10 = table[(2 * i) + 1];v11 = 16 * v9;if (v10 < 48 || v10 > 57)v12 = v10 - 87;elsev12 = v10 - 48;  //对 表奇数位的加密/* (v11 + v12) ^ 0x19)无压力计算。。 */for (int v5 = 0; v5 < 128; v5++){//爆破v5的值v6 = (v5 >> 4) % 16;v7 = ((16 * v5) >> 4) % 16;if (byte_4021A0[(16*v6+v7)] == ((v11 + v12) ^ 0x19)){printf("%c",v5);break;}}i++;if (i >= 35) break;}printf("\n");system("pause");return 0;
}

flag{Th1s_1s_Simple_Rep1ac3_Enc0d3}

题外话:

地址随机化,并不影响你静态分析,只对动调影响,对于这题影响不大。

感觉,接触了其他方向,确实是有助于reverse学习的。。。


http://www.ppmy.cn/embedded/125002.html

相关文章

【Spring】@RequestMapping、@RestController和Postman

文章目录 1.RequestMapping 注解介绍2. RequestMapping 使用3. RequestMapping 是 GET 还是 POST 请求&#xff1f;GET 请求POST 请求指定 GET/POST 方法类型 2. Postman 介绍1. 创建请求2. 传参介绍1. 普通传参2. form-data3. x-www-form-urlencoded4. raw 1.RequestMapping 注…

mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)

1、SQL 创建索引(CREATE INDEX 语句) 在SQL中&#xff0c;创建索引&#xff08;CREATE INDEX&#xff09;是一种用于提高数据库查询性能的方法。索引类似于书的目录&#xff0c;通过它可以更快地定位到表中的特定行。以下是一个创建索引的示例&#xff0c;以及对其各部分的解释…

【数据结构】【顺序表算法】 删除特定范围内的元素

题目&#xff1a;从顺序表中删除其值在给定值s和t之间&#xff08;s<t&#xff09;的所有元素&#xff0c;若s或t不合理或顺序表为空&#xff0c;则显示错误信息并退出运行 bool Del_s_t(SqList &L,ElemType s,ElemType t){int i,k0;if(L.length0||s>t){return fals…

【Java】—— 数据结构与集合源码:数据结构概述与线性表、二叉树

1. 数据结构剖析 我们举一个形象的例子来理解数据结构的作用&#xff1a; 战场&#xff1a;程序运行所需的软件、硬件环境 敌人&#xff1a;项目或模块的功能需求 指挥官&#xff1a;编写程序的程序员 士兵和装备&#xff1a;一行一行的代码 战术和策略&#xff1a;数据结构 上…

C++——string类

目录 前言&#xff1a; 一、C语言中字符串的缺陷 二、string常见接口极其调用 1.构造及遍历 2.、、[]、<<、>>运算符重载 3.string自身属性接口 4.增删查改接口 三、模拟实现 前言&#xff1a; 严格来说&#xff0c;string类并不属于STL中的一部分&#xf…

Linux 线程

目录 一.线程的概念 1.什么是线程&#xff1f; 2.Linux 系统对线程的实现 线程比进程要更轻量化体现在什么方面&#xff1f;&#xff1f; 线程切换较进程切换效率高的原因&#xff1f;&#xff1f; ①cache缓存&#xff08;主要原因&#xff09; ②寄存器的刷新&#xff…

Git管理远程仓库

添加远程仓库 要新增远程&#xff0c;请在终端上存储存储库的目录中使用 git remote add 命令。 git remote add 命令采用两个参数&#xff1a; 远程名称&#xff08;例如 origin&#xff09;远程 URL&#xff08;例如 https://github.com/OWNER/REPOSITORY.git&#xff09;…

微知-一个不错的rpm大全网站,临时找rpm包的好地方(rpmfind.net)

背景 经常要安装某个rpm包&#xff0c;在默认的镜像源找不到。这个网站可以直接下载安装&#xff0c;能够部分解决问题。 有些场景下载后还有依赖包&#xff0c;不影响大环境的情况&#xff0c;可以以 -nodeps安装&#xff0c;然后尝试使用。 另外rpmfind.net网站能够work的本…