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

菜鸟笔记#4.带壳破解

【实验目的】

1) 掌握利用查找字符串查找带壳软件破解方法。

【实验原理】

1) 利用软件登录时,提供的关键字,找到关键CALL,单步跟踪查找序列号。

【实验环境】

工具:OllyDBG
软件:C:\software\22.带壳破解\engydtsetup.exe

【实验步骤】

一、 了解软件验证机制

1.1 单击软件,默认安装即可,进入安装目录,运行软件,在用户名和注册码栏中输入任意数值,单击“登录”按钮。如图1所示


图1

1.2 弹出关键字提示对话框,记录下关键字“注册完成,请重新运行程序!”,提示说明这个软件是一个重启验证软件,注册码写入注册表或者某个配置文件中。如图2所示


图2

二、 利用PEID查壳

2.1 进入软件目录,选择目标软件,右键发送到PEID,进行查壳。如图3所示


图3

2.2 PEID软件提示ASPack2.12壳,不脱壳直接寻找正确的注册码。如图4所示


图4

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

3.1 将” engydt.exe”载入OllyDBG程序。如图5所示


图5

3.2 OllyDBG载入加壳软件会提示下面的提示对话框,单击“是”或“否”都不影响破解,这里单击“否”即可。如图6所示


图6

3.3 单击工具栏的“运行”(方向朝右的三角号)按钮,使软件运行起来,然后输入帐号和序列号。在弹出的对话框,单击“确定”按钮。然后按“ctrl+g”,在弹出的对话框中输入地址401000,使软件跳转到程序解密的开始处,这样就可以搜索关键字了。(加壳程序在载入OllyDBG时,是先载入壳程序,然后有壳程序解密软件。所以需要跳转到软件解密的地方搜索关键字符串,加密状态下是无法搜索到的)。如图7所示


图7

3.4 单击反汇编窗口的00401000处,右键菜单选择“中文搜索引擎”->”智能搜索”。 如图8所示


图8

3.5 在字符串界面,右键菜单选择“find”(或按ctrl+f键)查找“注册完成,请重新运行程序!”,找到了关键字符串,还找到了一个“Software\engydt”项(注册表的信息,程序在启动时,访问了注册表,提取了用户名和序列号,然后进行判断)。如图9所示


图9

3.6 在“Software\engydt”处双击,跳转到对应的反汇编窗口,在此处下断点(“Software\engydt”在字符串查找中有多出,找到离“未注册”最近的那个,因为软件重启后,会把输入的假码和真码对比,然后判断是否为注册用户,选择未注册上面的“Software\engydt”,表示软件读取注册表进入了对比)。如图10所示


图10

3.7 单击菜单栏中的”插件”->”常用断点设置”。 如图11所示


图11

3.8 在弹出的对话框中,选择”GetStartupInfoA(取初始化断点)”,单击确定(这个断点的作用为在程序初始化时断下程序,即在对比帐号和序列好时断下 )。如图12所示


图12

3.9 重新载入软件,按工具栏中的“B”按钮,切换到“断点对话框”,然后一直按“F9”按钮,直到首行反汇编命令变成“mov edx xx”的样式,代表软件运行起来了。如图13所示


图13

3.10 右键选择第二行(即激活状态为“始终”)禁止掉这个断点(初始化断点,程序已经解码了,不需要这个断点了),把第一行的激活状态“已禁止”变成“始终”,使读取注册表的断点生效,返回汇编窗口。如图14所示


图14

3.11 单击工具栏中“朝向右三角号”(或按F9)运行程序,程序断在了读取注册表的地址。如图15所示


图15

3.12 单击反汇编窗口,按工具栏中的“单步步过”按钮(或按F8键),一步步执行语句,分析软件验证过程,找到正确的注册码。如图16所示


图16

3.13 再次出现的特殊字符串,记录下来。如图17所示


图17

3.14 退出程序,找到两个特殊的字符串,其中一个为机器码,另外i一个为注册码。如图18所示


图18

3.15 在注册窗口输入用户名(sdy)和找到的注册码(5899120F47FEB70F8F5519757B66CF69077F12CEC14892EA)这个注册码是对应sdy的,单击注册验证。如图19所示


图19

3.16 注册完成后,再次运行,软件已经提示成功注册了。如图20所示


图20


[???]

相关文章:

  • 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 樱花坡道上的初逢
  • 2018 UESTC Training for Dynamic Programming - J 如何才能保留那些美好
  • python3.6+scrapy+mysql 爬虫实战
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • CentOS7简单部署NFS
  • co.js - 让异步代码同步化
  • ES6简单总结(搭配简单的讲解和小案例)
  • express如何解决request entity too large问题
  • Go 语言编译器的 //go: 详解
  • iOS小技巧之UIImagePickerController实现头像选择
  • jquery cookie
  • Mysql5.6主从复制
  • node入门
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python中eval与exec的使用及区别
  • SpiderData 2019年2月23日 DApp数据排行榜
  • STAR法则
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 阿里云应用高可用服务公测发布
  • 初探 Vue 生命周期和钩子函数
  • 模型微调
  • 删除表内多余的重复数据
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 说说动画卡顿的解决方案
  • 赢得Docker挑战最佳实践
  • Java性能优化之JVM GC(垃圾回收机制)
  • 阿里云重庆大学大数据训练营落地分享
  • 如何用纯 CSS 创作一个货车 loader
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #if #elif #endif
  • $jQuery 重写Alert样式方法
  • ( 10 )MySQL中的外键
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (区间dp) (经典例题) 石子合并
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)LINQ之路
  • (转)项目管理杂谈-我所期望的新人