使用IDA自带python patch的一道例题

首先看见就是迷宫

迷宫解出的路径,放在zip的文件可以得到一个硬编码

然后在原程序中,有一处很离谱

这个debugbreak就是IDA分析错误导致的

我们点进去发现里面全是nop

然后我们把我们得到的硬编码放在010里面,再用IDA打开

重新编译看汇编

你可以发现

这一段和nop里面的最后两段一样的

——————重点知识——————

我们随便打开一个调用函数的汇编

发现都有类似这三段的操作

这是什么意思呢?

问了下我的师傅——

这是关于栈的操作,先将当前的栈记录一下,放在ebp里面

然后mov 保存一下当前栈的操作,最后对栈底进行操作,(因为栈是下面先出)

(不同位数的操作可能不一样,但是都是这个道理)

————————————————

那么我们看debugbreak那里,

他多了一个add(这是减去栈后,回复栈的操作,我们直接nop掉)

然后加上这两段的汇编 55 8b ec

IDA内部python patch一下

be = 0x00401A20
en = 0x00401A5E 
a=[0x55,0x8b,0xec,0X90,0X83,0XEC,0X18,0X8B,0XCC,0X89,0XA5,0X48,0XFF,0XFF,0XFF,0X8D,0X95,0X74,
0XFF,0XFF,0XFF,0X52,0XE8,0X26,0X04,0X00,0X00,0XE8,0XD1,0XF9,0XFF,0XFF,0X83,
0XC4,0X18,0X88,0X85,0X67,0XFF,0XFF,0XFF,0X8A,0X85,0X67,0XFF,0XFF,0XFF,0X88,
0X85,0X73,0XFF,0XFF,0XFF,0X0F,0XB6,0X8D,0X73,0XFF,0XFF,0XFF,0X85,0XC9,
]
for i in range(be,en):
patch_byte(i,a[i-be])

然后我们就可以看见正确的函数了

因为最后监测v13

我们直接跟进v13的sub401411

首先这个unknowwn函数,==24?一看就觉得是len

然后下面是一个四个一组的异或操作

这个sub肯定就是取数组了

像这种~ 就是释放空间的操作

retunrn v10, v10=v11

v11

有个函数

跟进去看一下

居然有数据!我们前面一直没拿到数据

姑且试一下,万一对了呢

a=[ 26,   0,   0,   0, 199,  69, 148,
   16,   0,   0,   0, 199,  69, 152,   0,   0,   0,
    0, 199,  69, 156,  67,   0,   0,   0, 199,  69,
  160,  12,   0,   0,   0, 199,  69, 164,  55,   0,
    0,   0, 199,  69, 168,  35,   0,   0,   0, 199,
   69, 172,  99,   0,   0,   0, 199,  69, 176,  97,
    0,   0,   0, 199,  69, 180,  64,   0,   0,   0,
  199,  69, 184,   5,   0,   0,   0, 199,  69, 188,
  100,   0,   0,   0, 199,  69, 192,   7,   0,   0,
    0, 199,  69, 196,   6,   0,   0,   0, 199,  69,
  200,  54,   0,   0,   0, 199,  69, 204,  81,   0,
    0,   0, 199,  69, 208,  55,   0,   0,   0, 199,
   69, 212,  53,   0,   0,   0, 199,  69, 216,   1,
    0,   0,   0, 199,  69, 220,  67,   0,   0,   0,
  199,  69, 224,  97,   0,   0,   0, 199,  69, 228,
   97,   0,   0,   0, 199,  69, 232,  92,   0,   0,
    0, 199,  69, 236, 125,   0,   0,   0]
b=[26, 16, 0, 67, 12, 55, 35, 99, 97, 64, 5, 100, 7, 6, 54, 81, 55, 53, 1, 67, 97, 97, 92, 125]
for i in range(0,24,4):
    b[i+2]=b[i+3]^b[i+2]
    b[i + 1] = b[i + 2] ^ b[i + 1]
    b[i] = b[i +1] ^ b[i]
for i in b:
    print(chr(i),end='')

出了!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python---Numpy万字总结(2)

NumPy的应用(2) 数组对象的方法 获取描述统计信息 描述统计信息主要包括数据的集中趋势、离散程度和频数分析等,其中集中趋势主要看均值和中位数,离散程度可以看极值、方差、标准差等 array1 np.random.randint(1, 100, 10) …

音视频--AAC编码解析和示例

目录 1:AAC编码介绍 2:AAC格式介绍 3:AAC -ADTS帧组成 4:AAC-ADTS:(adts_fixed_header)格式介绍 5:AAC-ADTS:(adts_variable_header)格式介绍…

符合Misra C++标准且支持mmap的内存池管理模块

概述 定义内存管理的相关行为。使用了预分配的管理,先分配一块足够大的内存,然后需要时再从这块内存中进行分配。 代码仓库:https://gitee.com/liudegui/mem_pool 类之间的关系 模块名功能MemPool内存池模块入口,提供常用的模块…

HDFS- DataNode磁盘扩缩容

HDFS- DataNode磁盘扩缩容 背景: 缩减/增加节点磁盘 方案介绍: 采用hdfs dfsadmin -reconfig 动态刷新配置实现,不停服扩缩容。 注意事项: 请在进行缩容之前,务必了解实际的数据量,并确保磁盘有足够的空间来容纳这些数据。还需要考虑未来的使用需求,要预留一定数量的空间…

面向电商家居行业3D室内场景合成中的空间感知

本文主要介绍了3D场景合成技术在电商领域,尤其是家居家装行业的应用。它解释了如何使用3D场景合成创建逼真的室内设计,让消费者能够交互式地查看和体验产品,提高购物的趣味性和效率。文章提到了两种主要的3D室内场景生成算法:传统…

Curator分布式锁

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 分布式锁服务宕机,…

RZ9692实训开发通信系统构建(含配置json配置文件)

实验名称 通信系统的构建 实验目的: 实现一个通信系统的构建,要求传输两路正弦波,和一路视频信号,要求在接受端完整接受正弦信号和视频信号。 一、实验原理: 数字通信系统的一般模型: 数字通信系统的一…

验证搜索二叉树

目录 题目 方法一 思路 优化 方法二 思维误区 递归关系推导 代码实现 题目 98. 验证二叉搜索树 难度:中等 给你一个二叉树的根节点root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含…

Python 开发 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)

什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库,使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”(模型-模板-视图)的设计模式,将应用程序的不同组件分离开来&#x…

QT的C++版本是如何从ui文件编译成C++可以使用的.h文件的

Desktop_Qt_6_7_0_MinGW_64_bit是一个编译器,可以将ui文件编译为.h文件。我们可以在项目文件下看到这一样一个文件: 这里的ui_mainwindow.h文件我们可以打开看一下:你会发现你所有的ui设计都被记录在了这里。 /***************************…

最新网页版USB转串口芯片CH340中文规格书手册(20240511)

前言 南京沁恒的产品已经很成熟了,完全可替代国外USB转串口产品,不必迷信FT232,CP2102之类了。 另外,急着买芯片,直接跑过去的,看过几次妹子了:) CH340手册,基于网页3.3版本,规格书…

作为一名新能源汽车热管理仿真工程师需要具备哪些素养与技能

作为一名新能源汽车热管理仿真工程师,需要具备多方面的素养与技能,才能胜任这一岗位的工作。从工程素养到技术技能,再到沟通能力和团队合作,以下是对这些方面的探讨。 理论知识基础 首先,工程素养是新能源汽车热管理仿…

现代制造之数控机床篇

现代制造 有现代技术支撑的制造业,即无论是制造还是服务行业,添了现代两个字不过是因为有了现代科学技术的支撑,如发达的通信方式,不断发展的互联网,信息化程度加强了,因此可以为这两个行业增加了不少优势…

Spring-Cloud-OpenFeign源码解析-01-OpenFeign简介

OpenFeign简介 OpenFeign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求。 OpenFeign和Feign的区别 Feign是Spring Cloud组件中一个轻量级RESTful的HT…

[算法][差分][延迟相差][leetcode]2960. 统计已测试设备

题目地址: https://leetcode.cn/problems/count-tested-devices-after-test-operations/description/ 解法一:暴力解法 class Solution {public int countTestedDevices(int[] batteryPercentages) {//特殊条件判断if(null batteryPercentages || ba…

图论(洛谷刷题)

目录 前言: 题单: P3386 【模板】二分图最大匹配 P1525 [NOIP2010 提高组] 关押罪犯 P3385 【模板】负环 P3371 【模板】单源最短路径(弱化版) SPFA写法 Dij写法: P3385 【模板】负环 P5960 【模板】差分约束…

深度解析Nginx:高性能Web服务器的奥秘(上)

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Nginx概述 2、Nginx的历史与发展 3、Nginx的…

Kubernetes学习-深入Pod篇(一) 创建Pod,Pod配置文件详解

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Kubernetes渐进式学习-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 1.前言 我们在前面的文章讲解了Kubernetes的核心概念和服务部署&#x…

ViLT 浅析

ViLT 浅析 论文链接:ViLT 文章目录 ViLT 浅析创新点网络结构总结 创新点 本文先分析了4种不同类型的Vision-and-Language Pretraining(VLP) 其中每个矩形的高表示相对计算量大小,VE、TE和MI分别是visual embedding、text embedding和modality interact…

2024年数维杯数学建模

高质量原创论文已完成 需要的私我