逆向练习之 mingyue.exe wp

news2024/11/24 4:24:43

目录

一.查壳

二.主函数

三.operate函数

四.storage函数及4618和4620指针功能的解释

 五.judge函数

六.求解flag

七.其他--ida字符识别问题


一.查壳

64位无壳

二.主函数

1.这里的pointer_4618和4620是两个相邻的八字节内存单元,其中4620是字符串链表表头head

2.puts和scanf可以通过动态调试得知,这里是使用了命名

三.operate函数

1.ida可能会将该函数参数识别为两个,并且会显示红色,后续分析可以发现该num2变量无用,选中函数名,右键 set item type可以删掉第二个形参

2.该函数的基本功能是:

①对主函数输入的整数input循环除以26,每次循环将余数作为偏移值在0x7FF6266F32D8字符表中查找对应字符,并暂时保存到chr1对应的栈空间中

②从保存的字符串中逐个读取字符,并将其和7(0000 0111)异或,再进行storage()函数操作

③最后的judge函数用于判断字符串是否符合条件,符合则输出成功的弹窗,否则输出失败弹窗

四.storage函数及4618和4620指针功能的解释

根据分析可以发现storage函数是先创建链表新的节点(next),再将传入的chr字符保存起来

1.在主函数中,4618和4620初始时指向了一块16字节的空间,并且将该空间的内容置为0

2.调用storage函数后,先申请一块16字节空间,

然后用var变量保存原来的4618指针值,即var指针指向原来的单元,

对原单元解引用,一部分用于保存字符,另一部分保存next指针

4618最终指向链表下一个节点

3.在程序运行期间,4620始终指向main函数中分配的16字节空间,所以是表头

4.每次动态调试可以发现这两个指针所在单元地址也会变化,但是地址后四位不变,所以这两个指针应该是根据基址加偏移求得

 五.judge函数

该函数的基本功能是:每次循环处理链表两个节点的字符,判断字符是否对应等于aV4pY59字符表中的字符(可以根据该字符表反推出输入数据) 如果符合则输出成功的消息弹窗

六.求解flag

#include <iostream>
using namespace std;
unsigned char table[27] = ")(*&^%489$!057@#><:2163qwe";
int find(unsigned char ch)		//查找字符在table中的位置
{
	for (int i = 0; i < 27; i++)
		if (table[i] == ch)
			return i;
}
int main()
{
	unsigned char arr[15] = "/..v4p$$!>Y59-";
	int offset[14];			//offset是每次循环除以26后的余数,即偏移值
	long long int num = 0;
	for (int i = 0; i < 14; i++)
	{
		num *= 26;			//num每次等于最后剩的余数*26
		offset[i] = find(arr[i] ^ 7);
		num += offset[i];	//num(num/26后的值)+余数=num原始值
	}
	printf("%lld", num);
	return 0;
}

得到数据:2484524302484524302

 运行程序并输入可以看到认证成功

七.其他--ida字符识别问题

ida可能识别不出中文字符串,找到字符串所在空间后选中,按住alt+a,选择unicode即可显示中文

不过这里值得一提的是主函数里的"请输入正确数字"用该方法还是无法正确显示,可能是编码问题,所以动态调试观察程序运行也很重要

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385735.html

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

相关文章

自动驾驶规划 - 5次多项式拟合

简介 自动驾驶运动规划中会用到各种曲线&#xff0c;主要用于生成车辆的轨迹&#xff0c;常见的轨迹生成算法&#xff0c;如贝塞尔曲线&#xff0c;样条曲线&#xff0c;以及apollo EM Planner的五次多项式曲线&#xff0c;城市场景中使用的是分段多项式曲线&#xff0c;在EM …

springCloud之OAuth2

认证授权过程 在认证和授权的过程中涉及的三方包括&#xff1a; 1、服务提供方&#xff0c;用户使用服务提供方来存储受保护的资源&#xff0c;如照片&#xff0c;视频&#xff0c;联系人列表。 2、用户&#xff0c;存放在服务提供方的受保护的资源的拥有者。 3、客户端&am…

【spring】事务

概述 1、什么事务 事务是数据库操作最基本单元&#xff0c;逻辑上一组操作&#xff0c;要么都成功&#xff0c;如果有一个失败所有操 作都失败 2、事务四个特性&#xff08;ACID&#xff09; &#xff08;1&#xff09;原子性 &#xff08;2&#xff09;一致性 &#xff08;3…

java语言跨平台的特性:“一次编译,到处运行”

“一次编译&#xff0c;到处运行”是java语言跨平台的特性&#xff0c;平台指的是操作系统平台。 程序从源代码到运行的三个必经阶段&#xff1a;编码——编译——运行&#xff0c;调试。 首先编码阶段&#xff0c;需要编码语言是一个程序设计语言&#xff0c;而我们的java是程…

ChatGPT解答:python大批量读写ini文件时,性能很低,有什么解决方法吗,给出具体的思路和实例

ChatGPT解答&#xff1a; python大批量读写ini文件时&#xff0c;性能很低&#xff0c;有什么解决方法吗&#xff0c;给出具体的思路和实例 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). python大批量读写ini文件时&#xff0c;性能很低&#xff0c;有什么解决方法吗&…

springboot工程搭建的几种方式

一、通过idea工具搭建&#xff0c;如下&#xff1a; 新建Project和Module&#xff0c;选择Spring initializr&#xff0c;点击Next&#xff0c;进入到如下页面填写 填写完后点击Next 到如下页面&#xff0c;根据你的具体所需&#xff0c;选择要使用的技术依赖 点击Next 点击FIn…

巾帼绽芬芳 一起向未来(中篇)

编者按&#xff1a;为了隆重纪念纪念“三八”国际妇女节113周年&#xff0c;快来与你全方位、多层次分享交流“三八”国际妇女节的前世今生。分上篇&#xff08;节日简介、节日发展和节日意义&#xff09;、中篇&#xff08;节日活动宗旨和世界各国庆祝方式&#xff09;和下篇&…

云原生之docker网络详解

云原生之docker网络详解一、相关概念1.2、CNM1.3、libnetwork二、实操2.1、docker network常用命令2.2、运行一个docker容器&#xff0c;查看CNM三个概念2.3、查看docker0在内核路由表上的记录2.4、查看网络列表2.5、网络隔离效果展示2.6、host驱动网络一、相关概念 1.1、网桥…

链表经典刷题--快慢指针与双指针

本篇总结链表解题思路----快慢指针&#xff0c;其实也就是双指针&#xff0c;这个快慢并不单纯指“快慢”&#xff0c;它更多的可以表示&#xff0c;速度快慢&#xff0c;距离长度&#xff0c;时间大小等等&#xff0c;用法很有趣也很独特&#xff0c;理解它的思想&#xff0c;…

「并发编程实战」常见的限流方案

「并发编程实战」常见的限流方案 文章目录「并发编程实战」常见的限流方案一、概述二、计数器限流方案三、时间窗口限流方案四、令牌桶限流方案五、漏桶限流方案六、高并发限流算法小结文章参考&#xff1a; 追忆四年前&#xff1a;一段关于我被外企CTO用登录注册吊打的不堪往事…

01 | n2n虚拟局域网

1 n2n简介 为了满足两个不同局域网的机器进行通信&#xff0c;让不同网段的机器能够进行P2P( 点对点 peer-to-peer ) 通信。2 n2n源码 https://github.com/ntop/n2n.git3 n2n名词 3.1 SuperNode 超级节点 SuperNode 相当与注册中心, 它会记录边缘节点的连接信息&#xff0c;…

案例09-数据类型不一致导致equals判断为false

一&#xff1a;背景介绍 在判断课程id和班级id的时候如果一致就像课程信息进行更新&#xff0c;如果不一致就插入一条新的数据。其实两个变量的值是一致的但是类型是不一致的。这就导致数据库中已经有一条这样的数据了&#xff0c;在判断的时候结果为false&#xff0c;就有插入…

【这一篇就够】mysql创建JSON数据的索引

一. 创建索引 由于json有两类不同的数据形式&#xff0c;即&#xff1a;json对象&#xff08;如&#xff1a;{"id": 1, "name":"he"}&#xff09;&#xff0c;json数组&#xff08;如&#xff1a;["1","2","3"]&…

nexus安装与入门

安装 nexus-3.31.1-01-unix.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1YrJMwpGxmu8N2d7XMl6fSg 提取码&#xff1a;kfeh 上传到服务器&#xff0c;解压 tar -zvxf nexus-3.31.1-01-unix.tar.gz进入bin目录&#xff0c;启动 ./nexus start查看状态 ./nexus status默…

初始Linux操作系统

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

Linux常用命令等

目录 1.Linux常用命令 (1)系统命令 (2)文件操作命令 2.vim编辑器 3.linux系统中,软件安装 (1) rpm 安装,RedHat Package Manager (2)yum 安装 (3)源代码编译安装 1.Linux常用命令 Linux命令是非常多的,对于像嵌入式开发工程师,运维工程师需要掌握的命令是非常多的.对于…

旋转矩形框标注--roLabelImg的使用

1. 旋转目标标注roLabelImg roLabelImg是一款开源的,可标注带旋转角度的矩形区域的标注软件。roLabelImg源码github地址: https://github.com/cgvict/roLabelImg labelme和labelimg只能标矩形框,但不能标注旋转角度。roLabelImg既能标矩形框也能标注矩形框的选择角度,因此…

复旦发布中国版 ChatGPT :MOSS

不知道这个人工智能&#xff0c;有没有获得完整的一生。ChatGPT 是最先进的 AI&#xff0c;也是最热门的应用 —— 自去年 11 月底发布以来&#xff0c;它的月活跃用户两个月超过一亿&#xff0c;轻松拿到了全球互联网史上用户增长速度的第一。它也是一种门槛很高的技术。由于 …

服务预热配置化在泛型化方法上的实践

背景 由于开发过程中&#xff0c;个别dubbo接口的调用会在服务发布过程中&#xff0c;出现P99耗时报警问题。因此我们计划通过预热服务接口&#xff0c;通过预热来触发JIT&#xff0c;构建DB资源长链接。实现服务接口上线后&#xff0c;耗时过长&#xff0c;资源等待等问题&am…

基于RWEQ模型的土壤风蚀模数估算及其变化归因分析

查看原文>>>基于RWEQ模型的土壤风蚀模数估算及其变化归因分析 土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff…