攻防世界----->Replace

news2024/10/9 6:12:22

前言:做题笔记。

下载 查壳。

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; // edx
	char v5; // al
	int v6; // esi
	int v7; // edi
	char v8; // al
	int v9; // eax
	char v10; // cl
	int v11; // eax
	int v12; // ecx
	unsigned 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;
		else
			v9 = v8 - 48;
		//对 表偶数位的加密

		v10 = table[(2 * i) + 1];
		v11 = 16 * v9;
		if (v10 < 48 || v10 > 57)
			v12 = v10 - 87;
		else
			v12 = 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.coloradmin.cn/o/2198273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring系列 Bean创建过程

文章目录 初始化时机单例初始化流程getBeandoGetBeangetSingleton(String) 获取单例getSingleton(String, ObjectFactory) 创建单例beforeSingletonCreationcreateBeanafterSingletonCreation 创建 Bean 过程doCreateBeanaddSingletonFactory createBeanInstance 创建 Bean 对象…

医院管理智能化:Spring Boot技术革新

3系统分析 3.1可行性分析 通过对本医院管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院管理系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

ctf.bugku - game1

题目来源&#xff1a; game1 - Bugku CTF 访问页面&#xff0c;让玩游戏 得到100分&#xff0c;没拿到flag 查看页面源码&#xff0c; GET请求带有 score、IP、sign 三个参数&#xff0c;最后的flag 应该跟分数有关&#xff1b; 给了score一个99999分数&#xff0c; sign 为 …

STM32编码器接口

一、概述 1、Encoder Interface 编码器接口概念 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用…

如何录制微课教程?K12教育相关课程录制录屏软件推荐

在当今数字化教育的时代&#xff0c;微课作为一种重要的教学资源&#xff0c;受到了越来越多教师和学生的关注。制作一节优质的微课&#xff0c;录制是关键的环节之一。下面我们将结合相关知识&#xff0c;详细介绍如何录制微课教程。 一、微课录制前的准备 1.教学设计文档编写…

Ultralytics:YOLO11使用教程

Ultralytics&#xff1a;YOLO11使用教程 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows YOLO11使用教程进行目标检测进行实例分割进行姿势估计进行旋转框检测进行图像分类 参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多…

题目:圆桌会议

解题思路&#xff1a; 结果的顺序就是原序列的逆序&#xff0c;例如12345就是54321为结果顺序。同时将一个顺序序列&#xff08;非环&#xff09;变成逆序需要的次数为。想要的得到最短的交换次数&#xff0c;只需要将环尽量对半分&#xff0c;然后分别对两部分进行顺序序列变逆…

DAY27||回溯算法基础 | 77.组合| 216.组合总和Ⅲ | 17.电话号码的字母组合

回溯算法基础知识 一种效率不高的暴力搜索法。本质是穷举。有些问题能穷举出来就不错了。 回溯算法解决的问题有&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合切割问题&#xff1a;一个字符串按一定规则有几种切割方式子集问题&#xff1a;一个N个数…

SeaTunnel如何创建Socket数据同步作业?

本文为Apache SeaTunnel Socket Connector的使用文档&#xff0c;旨在帮助用户快速理解和有效利用Socket Connector&#xff0c;助力用户的应用程序实现高效、稳定的网络通信。 Socket是应用层与TCP/IP协议族之间进行通信的中间软件抽象层&#xff0c;它是网络编程的基础&…

视频怎么做成扫码展示?视频二维码在线做的方法

视频想要快速的分享给其他人&#xff0c;选择生成二维码是一种很方便的形式&#xff0c;其他人只需要扫描二维码就可以在线查看视频&#xff0c;与其他分享方式相比更加的简单、方便。现在日常生活中有很多场景都会有视频二维码的应用&#xff0c;简化了获取视频的流程&#xf…

typora笔记导出word格式:

Pandoc&#xff1a;各系统下载github链接 https://github.com/jgm/pandoc/releases/latest windows安装包 链接&#xff1a;https://pan.baidu.com/s/17AZNIMImbzFtWJAcAfAB0g?pwd55l2 提取码&#xff1a;55l2 先解压压缩包 点击 设置Pandoc路径&#xff0c;然后选择pa…

处理器中的几种hazard

什么是hazard? Instructions interact with each other in pipeline ; Structural Hazard 原因&#xff1a; An instruction in the pipeline may need a resource being used by another instruction in the pipeline ;Structural hazard occurs when two instructions nee…

Chromium 中chrome.cookies扩展接口c++实现分析

chrome.cookies 使用 chrome.cookies API 查询和修改 Cookie&#xff0c;并在 Cookie 发生更改时收到通知。 更多参考官网定义&#xff1a;chrome.cookies | API | Chrome for Developers (google.cn) 本文以加载一个清理cookies功能扩展为例 https://github.com/Google…

RHCSA的学习(4)

一、vi编辑器 &#xff08;1&#xff09;为什么学vi&#xff1f; 所有的Unix Like 系统都会内建 vi 文本编辑器&#xff0c;其他的文本编辑器则不一定会存在&#xff1b; 很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的 crontab, visudo, edquota 等指令)&#x…

考试宝 逆向 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…

【打印模板】子表类型数据支持超出行默认填充

09/25 主要更新模块概览 打印分组 默认填充 匹配地址 嵌入页面 01 表单管理 1.1 【打印模板】-子表类型&#xff08;数据关联&#xff0c;数据查询&#xff0c;子表单&#xff09;支持分组设置 说明&#xff1a; 在打印模板中&#xff0c;子表类型&#…

如何让 Raft 更稳健,使用 Pre-vote

本文参考文献 《Consensus: Bridging Theory and Practice》 1. Provote 解析原文 该算法解决的是某台机器被隔离后&#xff0c;再次加入时出现的扰动其他机器的问题。 1. 防止服务器重新加入集群时引发的中断 Raft领导者选举算法的一个缺点是&#xff0c;当一台已从集群中…

使用tcpkill断开异常tcp连接

在linux系统中&#xff0c;遇到TCP链接迟迟不能释放的情况&#xff0c;类似FIN_WAIT1、FIN_WAIT2的状态&#xff0c;释放时间不确定&#xff0c;而且对应的程序已经关闭&#xff0c;相应的端口也不再监听&#xff0c;无法通过杀进程来解决&#xff0c;这种情况下&#xff0c;为…

JS设计模式之策略模式:灵活、可扩展的编程利器

一. 前言 在 JavaScript 前端开发中&#xff0c;随着代码规模的增长和项目的复杂性&#xff0c;我们常常需要处理各种不同的条件和情况&#xff0c;而这可能导致代码变得冗长、难以维护。这时&#xff0c;我们就需要一种强大而灵活的编程模式来应对这些复杂的逻辑&#xff0c;…

人工智能的未来:从知识廉价时代到AI主导国家模式

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;知识的获取和使用正变得更加普及与廉价。这不仅引发了技术领域的深刻变革&#xff0c;也将对全球社会经济模式产生广泛影响。特别是在《时代》杂志对风险投资巨头维诺德科斯拉&#xff08;Vinod Khosla&#…