Part1 前言 

大家好,我是ABC_123,最近在整理之前用过的工具,发现了大学时期曾经用过的小榕写的扫描器“流光Fluxay”,一晃15年过去了,这个工具当年在国外的名气也是响当当的,想起来了那时候研究技术的单纯和快乐。

我收集了好几个流光扫描器的版本,发现有几个1999年和2000年的流光版本有各种限制,导致软件打不开了,可我还想再用一下。在年前把王爽老师的《汇编语言》重新看了一遍,又看了一些都快忘干净的逆向破解教程,于是就使用OllyDbg尝试解除了该软件的各种限制,正好练练手。

接下来就讲一讲具体的破解过程,我尽可能讲得详细些,适合新手入门。总共需要破解3处限制:1、软件启动时的“用户调查表”;2、数字签名校验;3、多处软件过期校验。

 Part2 破解过程 

  • 去掉“用户调查表”界面

软件打开后会有一个“用户调查表”界面,刚开始这个界面就把我给难住了,找关键字、找API函数、查找堆栈的窗口函数都不行,一通下断点一直走下去就走进类似于“PeekMessageW”的消息队列死循环。

最后想了个方法,出现“用户调查表”界面后,在OllyDbg上点击“暂停”按钮,然后按“Alt+F9”,从系统领空返回到程序的领空,很快找到关键跳转,然后在00407D19处下断点调试。

接下来将00407D19处的窗口给NOP掉,OD重新载入发现,第一个“用户调查表”窗口已经被去掉了。

  • 软件过期限制解除

将去掉“用户调查表”的程序保存为另一个exe文件,双击运行,直接提示“软件过期”,接下来就是去掉这个限制。

各种搜索关键字发现找不到,怎么办呢?经过思考,出现“流光2001已经到期”之后,程序会退出,那可以先将“程序退出”的功能给去掉,OllyDbg一直跟到004060B3处,发现了msvcrt.exit标记,发现了退出功能代码,在此给nop掉。

此时发现,软件仍然提示过期,但是不会退出了,说明修改成功。接下来猜想,退出代码上面必然是各种关键跳或者关键call,所以退出指令之前的几个jmp跳转指令全部打上断点,重新动态调试。

最终发现在0040606B处,将jle有条件跳转改为jmp无条件跳转,即可成功解除“软件过期”提示。

  • 数字验证解除

接下来继续运行流光2000,这时候,会提示“数字验证失败”,说明作者怕软件被捆绑后门,进行了校验。

为了解除这个“数字验证”,首先点击“确定”按钮,然后一路单步F8跟到“msvcrt.ext”退出提示,然后使用OD查看之前的汇编指令,发现了关键跳转所在的位置,同样将附近的4、5个跳转全部下断点,重新用OllyDbg动态调试。

最终经过反复测试,发现将00406875处的跳转改成jmp无条件跳转,即可绕过“数字验证”。

至此,已经将流光2000的所有限制全部解除(这里发现有时候还是会提示软件过期,但是在win10操作系统下不会提示,我也就不再花费时间去解除这些限制了)。

重新看一下这个流光老版本的界面吧,怀旧一下。

  • 流光1999年版本的限制解除

接下来破解一个网上能搜索到的最老的1999年版本的流光。有了前面的参考,破解起来会容易很多,毕竟一个软件研发者的写代码的习惯都是一致的,因而我们的破解思路也应该是一致的

同样出现了一个“流光II用户调查表”,但是这个界面和前面的不一样,前面的破解方法失效。这里我猜想一个软件开发人员,研发习惯都是一样的,所以我重新看了一下前面刚刚讲过的流光2001的破解启动界面的关键call附近有啥重要标记,发现有一处“Software\Banyet\FluXay”字符串,所以我们直接在流光1999软件中搜索这个字符串吧,猜想流光1999的关键call也在这个字符串附近。

接下来搜索“Software\Banyet\FluXay”,果然不出所料,存在这个字符串,接下来打上断点。

在当前断点之后很容易就找到了关键call,在004047D5处,将此处的call给nop掉。

第一个启动界面就被去掉了,接下来熟悉的界面出现了,好怀旧的界面啊。

点击“我同意”按钮之后,熟悉的“数字验证失败”又出现了。

这个界面使用前面的破解方法就不行了,猜想后面的功能实现不一样,接下来使用OD按下Ctrl+F8自动单步走,发现最后会陷入PeekMessageA消息队列的死循环。

接下来怎么办呢,我想了各种办法,最终用了一个废力但是效果不错的方法,我找了几个参考关键字,在关键字附近的关键跳都打上断点,然后F8单步走,凭感觉和经验在遇到的关键跳附近都打上断点,总共打了10几个断点,反复动态调试,终于有一个关键断点被找到了,于是将0043784C处改成jmp无条件跳转。

至此流光1999年的这个版本限制完全解除,看一下当年小榕大神的作品。

 Part3 总结 

1.   无意中发现找到msvcrt.exit退出指令,向上找关键跳和关键call,这种方法效果不错。

2.   逆向破解方面如果有软件编写经验会更好,上述我的破解过程,完全是按照研发人员写代码的流程来思考和破解的。

公众号专注于网络安全技术分享,包括APT实战分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。

Contact me: 0day123abc#gmail.com(replace # with @)

第50篇:使用OD逆向破解流光Fluxay扫描器各种限制(怀旧)相关推荐

  1. 逆向破解程序脱壳篇-压缩壳

    一.普及 What?壳 所谓"壳"就是专门压缩的工具. 这里的压缩并不是我们平时使用的RAR.ZIP这些工具的压缩,壳的压缩指的是针对exe.com.和dll等程序文件进行压缩,在 ...

  2. [网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了宏病毒相关知识,包括宏病毒基础原理.防御措施.自发邮件及APT28样本分 ...

  3. 逆向破解 - 兵器篇

    逆向破解 - 兵器篇 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 目录 文章目录 逆向破解 - 兵器篇 @[toc] 前言 1.调 ...

  4. [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.上一篇文章分享了IDA Pro反汇编工具的基础用法,并简单讲解一个EXE逆向工程解 ...

  5. GJM:移动App入侵与逆向破解技术-iOS篇 【转载】

    GJM:移动App入侵与逆向破解技术-iOS篇 [转载] 转载: URL http://dev.qq.com/topic/577e0acc896e9ebb6865f321 如果您有耐心看完这篇文章,您 ...

  6. [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. 技术分享:逆向破解华为路由器第三部分

    技术分享:逆向破解华为路由器第三部分 引文 在前面两个部分(1,2)已经介绍了UART,BusyBox等部分的逆向调试,而这篇将会开始在流量分析方面下手,来逆向出更多的信息. 正文 请看下图,数据存储 ...

  8. 【CrackMe 实战】逆向破解实战之 001 Acid burn.exe

    CrackMe:是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能 ...

  9. 逆向破解之160个CrackMe —— 008-009

    CrackMe -- 008 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

最新文章

  1. 基于Python的颜色识别器
  2. python做数据透视表_Python--数据透视表和交叉表、数据读取
  3. 动态规划--最长公共子序列
  4. php mysql 内存溢出_关于MySQL的整型数据的内存溢出问题的应对方法_MySQL
  5. HDU 5253 最小生成树(kruskal)+ 并查集
  6. window10 java 设置环境变量
  7. c语言正确理解以下名词及其含义,C程序作业答案.doc
  8. Qt文档阅读笔记-共享库的创建与调用
  9. ASP.NET验证控件祥解
  10. 可交互绘图——鼠标移到点的上方会显示该点的标签[jupyter notebook]
  11. 大数据平台安全问题有哪些
  12. cvCanny() 边缘检测
  13. vmware虚拟机连接网络
  14. 基于Kinetis系列微控制器K60芯片的I2C接口函数程序说明1
  15. 符号执行技术总结(A Brief Summary of Symbol Execution)- wcventure
  16. 金山对雅虎助手的测试报告
  17. 《勋伯格和声学》读书笔记(十一):相隔三个和四个循环五度的转调
  18. C# 装箱和拆箱,以及使用场景
  19. 油气田工业控制系统现状
  20. 2018年 吉林大学 软件工程 967考研经验分享

热门文章

  1. 教女友学会keras-yolov3目标检测详解——适合新手
  2. 软件工程-软件测试-测试方法
  3. Vue进阶(幺肆叁):如何用绝对定位(position:absolute)完美定位布局及其注意事项
  4. 如何重启MacOS 的 mysql 服务
  5. 智能家居物联网服务平台设计-论文
  6. 铨顺宏RFID:医院工作人员/养老院UWB工作人员定位解决方法
  7. 《SpringBoot篇》19.SpringBoot整合Quart
  8. 使用Handler创建一个Android秒表应用
  9. AES-GCM算法例程
  10. linux安装w3m