当前位置: 首页 > news >正文

菜鸟笔记#3.跳转破解

【实验目的】

1) 掌握利用查找字符串的方法下断点,找到关键跳转,更改跳转命令,实现软件破解。

【实验原理】

1) 利用软件登录时,提供的关键字,找到关键跳转下断点,更改跳转命令,改变程序流程。

【实验环境】

工具:OllyDBG
软件:C:\software\21.跳转破解\跳转.exe

【实验步骤】

一、了解软件验证机制

1.1 运行跳转.exe软件,在用户名和密码栏中输入任意数值,单击“登录”按钮。如图1所示


图1

1.2 弹出关键字提示对话框,记录下关键字“密码不对,请重新输入”。 如图2所示


图2

二、利用PEID查壳

2.1 进入软件目录(C:\software\21.跳转破解),选择目标软件,右键发送到PEID,进行查壳。如图3所示


图3

2.2 PEID软件提示无壳。如图4所示


图4

三、利用OllyDBG程序暴力破解软件

3.1 将跳转.exe载入OllyDBG程序,单击运行按钮(或快捷键F9)。如图5所示


图5

3.2 单击反汇编窗口,按Ctrl+G快捷键,在弹出的对话框中输入“00401000”,单击“确定”按钮。然后右键菜单选择“中文搜索引擎”->”智能搜索”。 如图6所示


图6

3.3 在弹出字符串界面,右键菜单选择”Find”(或按快捷键“Ctrl+f”),在弹出对话框中输入“密码不对,请重新输入”,进入关键字查找。如图7所示


图7

3.4 双击“密码不对,请重新输入”处,程序自动跳转到反汇编窗口” 密码不对,请重新输入”对应的那一行。向上查找关键CALL(注意关键CALL和关键跳转是对应的),一般情况下为往上数第二个或第三个CALL,即为关键CALL,在关键CALL处下断点(快捷键F2)。图中向下的三角号表示向下跳转,我们要找的就是能跳过“密码不对,请重新输入”这行的向下跳转。如图8所示


图8

3.5 向上查找到能跳过“密码不对,请重新输入”这行的关键跳,在关键跳转出下断点(即按F2)。如图9所示


图9

3.6 单击工具栏中的“运行”按钮,软件登录界面输入帐号和密码(输入值为任意,因为要观察软件在输入错误的帐号和密码的情况下,这个关键跳转是否会实现),发现跳转未实现(红色代表实现跳转)。如图10所示


图10

3.7 可见这个跳转未实现,就出现了“密码不对,请重新输入”提示,所以为关键跳转.。单击关键跳,右键菜单选择“汇编”(或按快捷键空格)。如图11所示


图11

3.8 弹出编辑对话框。如图12所示


图12

在编辑框中把“je”改成“jmp”(即把条件跳转改成无条件跳转,程序运行到“jmp”行时,直接跳过“密码错误,请重新输入”)的错误提示,然后单击“确定”按钮。如图13所示


图13

3.9 NOP填充后,选择刚才的填充代码,右键菜单选择“复制到可执行文件”->”选择” 。如图14所示


图14

3.10 在弹出的对话框中,右键菜单选择“保存到文件”。 如图15所示


图15

3.11 弹出保存对话框,起名保存即可。如图16所示


图16

3.12 双击刚才脱壳后的程序,任意输入帐号和密码,正常播放(播放一段时间后自动退出,原因不明,但破解的知识点讲道了)。如图17所示


图17


[?]Q1.最后程序莫名崩溃原因不明。

相关文章:

  • 菜鸟笔记#4.带壳破解
  • Japanese Class notes :1
  • 【Codevs 1088】神经网络 【NOIP 2003】
  • 【BZOJ 2956】模积和 【中国国家队清华集训 2012-2013 第一天】
  • python#WS001 requests库
  • python#WS002 beautifulsoup4
  • python#WS003 爬虫规则习题
  • 【Bugku】这是一张单纯的图片?? 【writeup】
  • 【转】隐写工具篇
  • [Bugku]密码???[writeup]
  • 【转】Linux下的cat指令
  • 【CodeVS 1007】级数求和
  • 主机接口
  • 检查针孔摄像头
  • 2018 UESTC Training for Dynamic Programming - A 樱花坡道上的初逢
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [deviceone开发]-do_Webview的基本示例
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【附node操作实例】redis简明入门系列—字符串类型
  • angular学习第一篇-----环境搭建
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • HTTP--网络协议分层,http历史(二)
  • java第三方包学习之lombok
  • k8s 面向应用开发者的基础命令
  • MD5加密原理解析及OC版原理实现
  • Netty 4.1 源代码学习:线程模型
  • V4L2视频输入框架概述
  • Vue学习第二天
  • 闭包,sync使用细节
  • 大快搜索数据爬虫技术实例安装教学篇
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 微服务入门【系列视频课程】
  • 自定义函数
  • 仓管云——企业云erp功能有哪些?
  • ​Spring Boot 分片上传文件
  • # 数据结构
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (3)STL算法之搜索
  • (9)目标检测_SSD的原理
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (转)Linux整合apache和tomcat构建Web服务器
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net Signalr 使用笔记
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .ui文件相关
  • :O)修改linux硬件时间
  • @Pointcut 使用