软件逆向—— ExifPro 2.1
Exifpro是一款小巧简便的图像浏览工具,比较适合像我这样的新手用于逆向分析。
实验目的
分析Exifpro主要注册函数功能及其实现原理,通过修改,实现对Exifpro的破解。
实验环境
- win10虚拟机
- PEID 0.95
- Ollydbg
- Exifpro 2.1
实验步骤
查壳
利用PEID程序查壳,发现该程序无壳,这方便了我们的分析判断。
打开软件调试
我们打开Exifpro,查看其版本信息。发现目前是尚未注册登录的版本。
我们打开输入序列号的窗口,尝试向其中输入不同的数值,看看软件会有什么反应。
1.不输入
2.输入格式错误的邮箱
3.随机输入一段序列号
这些提示窗口的字符串其实是一种非常有用的信息,我们可以通过这些字符串,尝试定位到相对应的程序段。
定位到程序段
利用ollydbg打开Exifpro程序
右键点击,选择中文引擎搜索中的智能搜索
在中文搜索引擎页面右键点击,选择find。将“Serial number is invalid”输入其中,点击确定。
双击跳转到相应地址处。
寻找函数开头并下设断点
我们向上寻找该函数的开头位置。在00482BC2处发现有个retn指令,我们可以推断从下一条指令push 0x10开始,是该函数的开头位置。
我们双击6A 10 处,在此下设断点,逐步开始调试。
我们在利用ollydbg打开的ExifPro中输入邮箱名称和序列号。再次点击确定,由于在此处已经下设了断点,所以程序此时没有反应。注意此时的所输入的序列号和邮箱地址,在以后的分析中会有所用到。
逐步跟踪分析程序
点击F8一步步的跟踪程序的进行
lea是“load effective address”的缩写,该指令负责将内存的地址赋值给一个操作数。在这里,利用lea指令将存放邮箱字符串的地址赋值到ebx中。
在这里,是比较输入邮箱的长度,如果邮箱的长度小于5,则视为不合法邮箱,进行跳转。毕竟对于任意一个邮箱来说,"@.com"长度已经达到了5。而在本次实验中,我们的邮箱长度是13
如果邮箱长度小于5则会跳转至此处,同时会弹出窗口“请输入有效邮箱“
在这里的eax记录的是邮箱账号@前面字符序列的长度,如果在输入邮箱时输入的是非法字符,如@345312.com之类的,系统也会检测出来。
在这里程序取了序列号的长度放到了eax中,若长度小于4,就会弹出“输入有效序列号”的弹窗。
这一段主要是计算序列号的长度并遍历的时候进行排查。与上面一段不同,这里考虑到了序列号中存在的空格和“-”的情况。用eax存放数值,值得注意的是,这里存放的是字符串类型。红框中间有两段比较函数,分别是拿eax与0x20和0x2D比较,0x20就是空格,0x2D就是“-”。空格和“-”不计入序列号长度,这里计算的长度就是真实的数字长度,将计算结果存放在esi中。
这一段代码是判断序列号长度是否为24位,若未达到24位,则会报警说序列号无效。
取序列号前22位的和
这一段是检测第23位*10+第24位的数是否与前22位取后两位的值相等。在本次实验中,我们取的是78和93,两者是不相等的。
因此他跳转到弹出警告窗口处
我们修改起初输入的序列号,改为“123456781234567812345693”试试,这一段是符合刚才的要求的。我们再试一次。
这一串代码主要是实现将序列号前二十位由字符形式合成为一个整数,其中ExifPro._allmul函数,负责将每一位都×10。
通过这三条指令,先将邮箱号压入栈中,通过ExifPro.NameToNumber函数将字符串转为对应的数字,再从栈中取出放到ecx中。
再往后运行后,我们发现点击确定后并没有提示框的出现。起初,我以为这样是破解成功了,但我打开“About”后发现,其实并没有注册成功。我估计后台还有其他的检测函数,比如检测用户名和序列号的匹配关系。所以我换了个思路。
在主程序段搜索“Unregistered Version”,跳转到相应界面。
我们再网上找,找到了这个函数。ExifPro.IsAppRegistered,根据英文意思我们就可以推断出这是个判断是否注册的函数。我们观察发现这个call的返回值决定了程序是否跳转到402087处,而402087处就是显示“未注册版本”的地方。
我们跟随进该call中进行查看,发现该call在最后将bl的值复制到al中结束。于是我们把这句话改为MOV AL, 0x1
运行一次试试,大功告成
软件逆向—— ExifPro 2.1相关推荐
- 随想录(软件逆向与OllyDbg)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 学习过c语言的同学都知道,在代码编写完成之后,就可以用调试器对程序进行单步调试了.在windo ...
- 关于学习软件逆向分析意义的阐述
1对本课程教学地位的理解和想法(学习软件逆向分析的意义) 1.1逆向工程的起源 世界上最早的逆向工程其实来源于战争时期.在军事战争时期,各国之间常常存在水上作战,而船舶就成了运输和作战的重要工具.如下 ...
- Web逆向、软件逆向、安卓逆向、APP逆向,关于网络安全这些你必须懂
逆向工程是网络安全行业里面一项很重要的技术. 先解释下逆向工程是什么. 逆向是一个相对正向而言的解释,相对正向来说,对一个程序来讲,正向就是开发的过程,从0到1. 就是在一个软件诞生的整个生命周期中的 ...
- 视频教程-x86/x64软件逆向分析入门-C/C++
x86/x64软件逆向分析入门 成都理工大学优秀讲师,教授,二十年开发经验,和十六年一线教学工作经验,发表学术论文十余篇.参与包括863项目等多个国家级科研项目,参与包括微信机器人(WeChaty)等 ...
- 某K字头运动软件逆向分析-课程精讲
本篇承接上一篇某K字头运动软件逆向分析-登录时非法的请求 在跟随视频训练时,很可能有些细节自己注意不到,以至于一些动作不规范,练习新动作时看一下讲解还是有必要的. 许多课程都是前面一两节可以免费观看讲 ...
- 零基础学CE,手把手教程!!!(软件逆向进阶篇)
1.本次报告针对扫雷游戏,分析"初级","中级","高级"的棋盘内存地址范围 2.找出"雷数","笑脸&quo ...
- X86逆向1:软件逆向系列入门课
一切从第一篇文章开始,这是学习逆向技术的启蒙课,请下载课件,并跟随我的不发一步步学习软件逆向技术. 以下是一个简单的登陆提示框,当用户输入正确的用户名和密码时,则会提示逆向成功,如果输入错误则提示错误 ...
- 软件逆向分析系列教程
笔者倾心打造的一款软件破解入门课程,为避免纠纷,本人编写了与本次内容相关的课程课件共各位逆向小白学习. 文章链接 文章标题 https://www.cnblogs.com/LyShark/p/1114 ...
- od拦截消息 comboboxonchange_某聊天软件逆向之偷看消息不quot;已读quot;
文章来源:网友投稿 0x00 适用场景 本文所采用技术,仅用来实现自定义功能,适用场景仅为自己两台电脑使用聊天软件互发消息学习研究使用. *本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果 ...
最新文章
- Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)
- python文件流习题解析
- BZOJ2120 数颜色 【带修改莫队】
- Panoptic SegFormer:全景分割第一名!南大港大英伟达提出新算法,霸榜全景分割
- 沃尔沃汽车警告称:半导体短缺将持续到明年
- Python稳基修炼的经典案例14(计算机二级、初学者必会字符格式处理)
- poj 2573 Bridge(有A、B、C、D四个人,要在夜里过一座桥……)
- win10软件安装出现错误代码2503/2502
- 在不安装oracle,在linux上安装oracle 10g上还是不顺利
- SQLyog-12.4.2版下载,SQLyog最新版下载,SQLyog官网下载,SQLyog Download
- 天线的特性及微带天线的设计
- 获取网站图标icon
- 计算机磁盘管理 移动硬盘创建盘符,电脑中插入移动硬盘后无法显示分区盘符如何解决...
- DFI(Deep/DynamicFlow Inspection,深度/动态流检测)
- Navicat Premium 15 for Mac(数据库管理)
- Transformer 和卷积神经网络在跨物种基因组DNA N6甲基腺嘌呤位点识别中的应用
- 白噪声检验python_python 加一个白噪声跟老齐学Python之Python安装
- 字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》
- 织梦标签调用:最新文章、相关文章、推荐文章、热点文章、头条
- pytorch随机种子无法复现