使用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='')

出了!

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

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

相关文章

ACC-UNet: A Completely Convolutional UNet Model for the 2020s

文章目录 ACC-UNet: A Completely Convolutional UNet Model for the 2020s摘要方法实验结果 ACC-UNet: A Completely Convolutional UNet Model for the 2020s 摘要 这十年以来,计算机视觉领域引入了 Vision Transformer,标志着广泛的计算机视觉发生了…

QT学习之合成图片

1.给bmp图片添加文字 // 2.合成前后图片 QImage imageF("bkF.bmp"); // 加载图片 QPainter painter(&imageF); painter.setFont(QFont("Arial", 5)); // 设置文字的字体和大小 // 设置姓名 QPoint posName(95, 68); painter.drawText(posName, rea…

2010-2022年ESA_ CCI-LC数据集下载

扫描文末二维码,关注微信公众号:ThsPool 后台回复 g009,领取 2010-2022年300m分辨率 ESA_ CCI-LC 数据集 哥白尼气候数据集:土地利用和土地覆盖研究的宝贵资源 🌍🔍 土地利用和土地覆盖变化是全球变化研究…

武汉星起航引领跨境新浪潮,一站式解决方案助力卖家驰骋亚马逊

在全球化浪潮下,跨境电商已成为外贸发展的新引擎,为无数创业者提供了全新的商业机遇。而在这场跨境电商的浪潮中,武汉星起航电子商务有限公司以其专业的一站式解决方案,成为众多创业者和卖家的得力助手,引领着他们成功…

GT2512-STBA 三菱触摸屏12.1寸型

T2512-STBA参数说明:12.1"、SVGA 800*600、65536色、TFT彩色液晶显示屏、AC电源、32MB内存 三菱触摸屏GT2512-STBA性能规格详细说明: [显示部] 显示软元件:TFT彩色液晶显示屏 画面尺寸:12.1寸 分辨率:SVGA 80…

通用人工智能AGI,究竟是一个哲学问题还是技术问题?

引言 在探索人工智能的未来方向中,人工通用智能(AGI)的概念逐渐成为科技领域和哲学探讨的焦点。AGI旨在创建可以执行任何智能任务的机器,甚至在某些方面超越人类的能力。然而,关于AGI的研究不仅仅是技术问题&#xff…

idea上如何新建git分支

当前项目在dev分支,如果想在新分支上开发代码,如何新建一个分支呢?5秒搞定~ 1、工具类选择git,点击New Branch 或者右下角点击git分支,再点击New Branch 2、在弹出的Create New Branch弹窗中,输入你的新分支…

Spring Cloud Alibaba 网关 Gateway 集成(7)

项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…

【vue+echarts】绘制中国地图,3D地图,省、市、县三级下钻以及回钻,南海诸岛小窗化显示,点位飞线图,点位名称弹窗轮播展示,及一些常见问题

先看效果展示图 目录 准备工作一, 绘制3D地图1,调用官网地址接口获取2,去官网下载中国地图的json数据到本地,本地引入 二, 南海诸岛小窗化显示1, 手动过滤掉,只保留小窗化的南海诸岛2, 代码层面过滤掉,只保留小窗化的南海诸岛 三, 省、市、县三级地图下钻及回钻1, 下钻2, 回钻…

使用 Express 框架构建的 Node.js web 应用程序

使用 Express 框架构建的 Node.js web 应用程序 ├── config │ └── config.js ├── middlewares │ └── errorHandler.js ├── routes │ ├── index.js │ ├── postRoutes.js │ └── userRoutes.js ├── .env ├── .gitignore ├── app.js ├…

格雷希尔GripSeal:E10系列低压信号电测试连接器,应用于新能源汽车的DCR测试和EOL测试

新能源车的电驱动、电池包等都有一些信号接口,从几针到几十针不等,而且每种接口都有独特的电性能要求,这些接口在电池包进DCR测试或是EOL测试时,为了满足这些信号接口的需求,我们设计了E10系列信号针快速接头&#xff…

vue3实战Easy云盘(一):创建项目+登录注册页面+构建框架页+上传头像/修改密码/退出登录

一、创建项目 1.创建项目 2.安装各种依赖 npm install highlightjs/vue-plugin moefe/vue-aplayer aplayer axios docx-preview dplayer element-plus highlight.js js-md5 sass sass-loader spark-md5 vue-clipboard3 vue-cookies vue-pdf-embed vue-router …

redis深入理解之数据存储

1、redis为什么快 1)Redis是单线程执行,在执行时顺序执行 redis单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(socket 读)、解析、执行、内容返回 (socket 写)等都由一个顺序串行的主线…

C++ C# 贝塞尔曲线

二阶贝塞尔曲线公式 三阶贝塞尔曲线公式 C 三维坐标点 二阶到N阶源码 //二阶公式: FVector BezierUtils::CalculateBezierPoint(float t, FVector startPoint, FVector controlPoint, FVector endPoint) {float t1 (1 - t) * (1 - t);float t2 2 * t * (1 - t);…

docker 容器无法直接读取宿主机文件

最近一个需求, 要在后端直接使用代码直接生成 pdf 文档, 由于使用的 apache 的工具包, 该工具包无法直接解析中文字体, 需要导入外部 中文插件包, 相关代码如下: PDPage page new PDPage(PDRectangle.A4);document.addPage(page);PDFont fontFile PDType0Font.load(document…

输出电流保护/限制方案分享

需求 对电源输出进行 过/限 流保护。 方案1 采样电流输出模拟电压 -> 电压比较器 -> 控制MOS 打开/关闭; 这个方案的问题是: 当过流MOS关断之后,电流采样的电压是0,会快速使使MOS重新打开,电路现象是好像没关…

大文件传输的好帮手Libarchive:功能强大的开源归档文件处理库

在数字化时代,文件的存储和传输对于企业的日常运作至关重要。但是,服务器中的压缩文件往往无法直接查看或预览,这给用户带来了不便。为了解决这一问题,在线解压功能的开发变得尤为重要。接下来,小编将介绍一个能够实现…

C/C++关键字:extern

文章目录 一、extern:声明外部变量或外部函数1.extern的作用2.代码举例①例1②例2③例3 一、extern:声明外部变量或外部函数 1.extern的作用 extern的作用:声明外部的全局变量或外部的函数,以实现跨文件使用其他.c/.h文件的全局…

Hive的文件存储格式

TEXTFILE 文本文件,默认的文件存储格式,内容是可以直接查看,用来保存非结构化数据; 特点:文本文件的格式一旦定义就无法改变. 除TEXTFILE外,其他文件存储格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,…

微信小程序原生组件使用

1、video组件使用 <view class"live-video"><video id"myVideo" src"{{videoSrc}}" bindplay"onPlay" bindfullscreenchange"fullScreenChange" controls object- fit"contain"> </video&g…