南阳理工学院.docx
《南阳理工学院.docx》由会员分享,可在线阅读,更多相关《南阳理工学院.docx(10页珍藏版)》请在冰豆网上搜索。
南阳理工学院
南阳理工学院
逆向工程
学院:
软件学院
班级:
网安一班
姓名:
张可
学号:
1215135150
指导老师:
邱罡
《逆向工程》项目作业任务书
一、项目内容
1.逆向分析的意义说明
2.逆向分析目标选取(可以是加解密,脱壳,反调试,协议分析,恶意软件分析等等),分析工具的选用,使用格式
3.逆向分析步骤及方法说明,要有截图
4.逆向分析实现的效果,要有截图
5.逆向分析结论
二、作业要求
1.作业书写顺序:
拟解决问题分析,确立实施目标,实施步骤,结论说明和改进措施。
字数不少于5000字,文字图表清晰,排版整齐。
不能使用网上复制内容(尤其是图片)
2.编写大型作业说明书。
说明书主要有以下内容:
1)任务书(单独用一页)
2)前言
3)目录
4)方案论证
确定逆向分析方案,工具选择。
对拟采用的几种方案进行分析、比较,选择最终方案。
5)测试
通过测试,分析逆向分析方案是否适合设计要求。
6)收获和体会
写出心得体会。
7)主要参考书
1.逆向工程的意义
2.逆向分析目标选取
3.逆向分析步骤及方法说明
4.逆向分析实现的效果
5.逆向分析结论
前言
逆向工程(又名反向工程,ReverseEngineering-RE),又称为反向工程,反求工程。
这一概念于20世纪60年代提出,但对它从工程应用角度去研究。
从反求的科学性进行深化是从20世纪90年代开始的。
它将数据采集设备获取的实物样件表面的内腔数据,输入专门反求软件中进行处理和三位重构,在计算机上再现原工件的几何形状,并在此基础上进行原样复制修改和重设计。
随着计算机技术在各个领域的广泛应用,特别是软件开发技术的迅猛发展,基于某个软件,以反汇编阅读源码的方式去推断其数据结构、体系结构和程序设计信息成为软件逆向工程技术关注的主要对象。
软件逆向技术的目的是用来研究和学习先进的技术,特别是当手里没有合适的文档资料,而你又很需要实现某个软件的功能的时候。
也正因为这样,很多软件为了垄断技术,在软件安装之前,要求用户同意不去逆向研究。
逆向工程的实施过程是多领域、多学科的协同过程。
1.逆向工程的意义
逆向工程作为吸收和消化现有技术的一种先进设计理念,其意义不仅仅是仿制,应该从原型复制走向再设计。
以现有产品为原型,对逆向工程所建立的CAD模型进行改进得到新的产品模型,实现产品的创新设计。
CAD模型是实现创新设计的基础,还原实物样件的设计意图,注重重建模型的丙设计能力是当前曲程CAD建模研究的重点。
三维重建只是实现产品创新的基础,再的思想应始终贯穿于逆向工程的整个过程,将逆向工程的各个环节有机结合起来,集成CAD、RP等先进技术,使之成为相互影响和制约的有机整体,从而形成以逆向工程技术为中心的产品开发体系。
逆向工程是一门开拓性、综合性、实用性较强的技术,属于新兴的交叉学科分支。
逆向工程的重大意义在于:
逆向工程不是简单的把原有物体还原,它还要在还原的基础上进行二次创新。
所以逆向工程作为一种新的创新技术性现已广泛应用于工业领域并取得了重大的经济和社会效益。
我国是最大的发展中国家,消化、吸收国外先进产品技术并进行改进是重要的产品设计手段。
逆向工程技术为产品的改进设计提供了方便、快捷的工具,它借助于先进的技术开发手段,在已有产品基础上设计新产品,缩短开发周期,可以使小企业适应小批量、多品种的生产要求,从而使企业在激烈的市场竟争中处于有利的地位。
逆向工程技术的应用对我国企业缩短与发达国家的差距具有特别监理要的意义。
2.逆向分析目标选取
(1)目标:
暴力破解一款软件的注册:
极品私人密盘。
(2)工具选取:
PEID、OD
(3)工具介绍
PEiD(PEIdentifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
扫描模式
正常扫描模式:
可在PE文档的入口点扫描所有记录的签名;
深度扫描模式:
可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
核心扫描模式:
可完整地扫描整个PE文档,建议将此模式作为最后的选择。
PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。
前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。
命令选项
peid-time〓显示信息
peid-r〓扫描子目录
peid-nr〓不扫描子目录
peid-hard〓采用核心扫描模式
peid-deep〓采用深度扫描模式
peid-norm〓采用正常扫描模式
主要模块
任务查看模块:
可以扫描并查看当前正在运行的所有任务和模块,并可终止其运行;
多文件扫描模块:
可同时扫描多个文档。
选择“只显示PE文件”可以过滤非PE文档;选择“递归扫描”可扫描所有文档,包括子目录。
Hex十六进制查看模块:
可以以十六进制快速查看文档。
插件
KryptoANALyzer
PEID通用脱壳器
通用OEP查找器
AddSignature
AdvancedScan
Crc32
Ollydbg通常称作OD,是反汇编工作的常用工具,吾爱破解OD附带了118脱壳脚本和各种插件,功能非常强大,基本上不需要再附加安装其它插件了。
对OD的窗口签名进行了更改,从而避免被针对性检测修改了OD窗口切换快捷键为TAB键、
修改附加窗口支持滚轮滚动
修改OD启动时为优先加载插件
采用论坛夜冷风发布的字符串插件,有效的解决了字符串退出BUG
增加了advancedolly插件有效解决了OD无法批量修改及无法进行带
壳数据窗口跟随的BUG
.改动了OD子窗口的类名
更新了部分插件及添加部分插件
sod默认设置为全选模式,以后会自行更新
解决注入代码时提示框
OD,软件名称,反汇编工具OD=OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring3级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。
同时还支持插件扩展功能,是目前最强大的调试工具。
基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug。
OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:
反汇编窗口:
显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:
显示当前所选线程的 CPU 寄存器内容。
同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:
显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:
显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:
显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
3.逆向分析步骤及方法说明
1 查壳
使用PEID载入查壳,结果如下图,发现软件加了ASPack 2.12壳
2 脱壳
寻找OEP
(1)用OD载入该程序
(2)按下F8单步步过,发现ESP此时是红色,记下此时ESP寄存器中的值0012FF6C(载入程序处的下一个ESP是红色,当然每个人机器上运行这个值有可能不同)
(3)在命令行下输入dd 0012FF6C,然后按下回车键
(4)选中要下断点的0012FF6C那行,依次选择断点 -> 硬件访问 -> Word
(5) 在菜单栏调试(D)下的硬件断点(H)下选项下可以看到我们设置的硬件断点
(6)然后按下F9运行程序,运行到程序停止
(7)删除前面下的硬件断点,选择调试(D)下的硬件断点(H),弹出如下对话框,点击 删除1按钮删除前面下的硬件断点
(8)运用F8很快会到达程序的OEP(此时需要使用F8单步步过)
3 暴力破解
(1)用OD载入脱壳后的程序,利用OD的字符串查找插件(注意Delphi程序搜索时使用 搜索ACSII)很快找到注册与非注册的地方
(2)双击进入,看到在注册的上方有一个je跳转,跳转到“极品私人密盘”
(3)尝试不让je这个跳转实现,那么程序就会执行到“极品私人密盘 3.10(已注册)”,所以将je改成相反的跳转jnz(当然也可以将这行代码NOP掉)
注:
一定要在地址前加0,因为地址是以字母X开头的,否则OD会提示未知标识符修改不成功
(4)选择OD上修改的那一行,右键选择复制到可执行文件 -> 选择,弹出其他框,仍然右键保存文件,会弹出保存文件对话框,填写文件名及保存地方即可
(5)保存后,打开测试下发现,软件已经是注册版本
(6)以为大功告成,但是在使用的时候发现,不能输入5位数以上的密码
(7)依然使用字符串查找插件,找到提示密码超位的地方
(8)双击进去,在其上面发现关键跳转,直接将jle修改成jmp
(9)保存文件后,测试发现已经可以输入5位数以上的密码了
(11) 爆破成功
4.逆向分析实现的效果
6.逆向分析结论
通过这次的破解使我认识到逆向分析在实践中的应用更使我知道了逆向工程的意义所在。
逆向工程软件,种类会越来越多,而且功能也将朝着更精准、更人性化的方向发展!
我们要学习的东西还有很多只有不断的学习我们才能更好的用我们学到的知识来服务社会。