10.1软件破解 软件破解:暴力修改软件运行机制或者分析软件相关算法使免费使用商业软件。 逆向工程是反汇编程序而分析出软件的源代码。 逆向工程包括:分析软件,分析闭源软件的源代码,分析源软件的互操作性,分析编译器产生的代码来验证编译器的性能和正确性(软件注册) 今天我们要举例的软件是是一个邮件服务器所用的软件: WebEasyMail,中文标准版本价格如下 用户数 标准版本价格 (人民币) 250 用户 530元 500 用户 930元 1000用户 1530元 2000用户 2130元 5000用户 2930元 无限制用户 3930元 这些是标准版的价格 530+930+1530+2130+2930+3930=11980 如果破了标准版 我们就等于 破了一个价值 11980元的软件 不过我们今天要破的企业版 企业版是这个软件的高级版本 也是最好的版本 但是企业版的没有报价,估计无限制用户的企业版 要10万元 首先下载这个软件的企业版 这里是官方的下载地址 http://www.winwebmail.com/download/3621/EV/WebEasyMail.EXE,然后安装。
检测壳 壳的概念:所谓“壳”就是专门压缩的工具。 这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。 1、壳的作用: 保护程序不被非法修改和反编译。 对程序专门进行压缩,以减小文件大小,方便传播和储存。 2、壳和压缩软件的压缩的区别是: 压缩软件只能够压缩程序 而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行 3、下面来介绍一个检测壳的软件 PEID v0.92 这个软件可以检测出 450种壳 新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。 另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。 支持文件夹批量扫描 我们用PEID对easymail.exe进行扫描 找到壳的类型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 说明是UPX的壳 脱壳 1、概念:对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。 2、脱壳成功的标志 脱壳后的文件正常运行,功能没有损耗。 还有一般脱壳后的文件长度都会大于原文件的长度。 即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。 3、关于脱壳有手动脱壳和自动脱壳 自动脱壳就是用专门的脱壳机脱 很简单 按几下就 OK了 手动脱壳相对自动脱壳 需要的技术含量微高 4、工具: UPX SHELL的外壳软件 UPX SHELL v3.09 UPX 外壳程序! 目的让UPX的脱壳加壳傻瓜化 注意: 1、如果程序没有加壳 那么我们就可以省去第二步的脱壳了,直接对软件进行分析了。 2、脱壳后的软件可用PEID软件识别出EXE文件是用什么语言编写的。
尝试注册 运行程序WebEasyMail,尝试注册,获取注册相关信息通过尝试注册 我们发现一个关键的字符串“序列号输入错误”
反汇编(W32Dasm) 反汇编就是把可执行的二进制文件转为汇编代码,进而可以研究该程序 我们平时写程序用的都是这样那样的语言.但是计算机是不认这种语言的.所以在程序发布前就要进行汇编,把你的程序汇编成计算机能够识别的二进制代码后再交由计算机机执行.反汇编就是汇编的逆过程,将二进制代码转换成原来的程序语句. 作用:把软件的代码从EXE中解析出来.通常编写程序是利用高级语言如C,Pascal等语言进行编程的,后再经过编译程序生成可以被计算机系统直接执行的执行文件。反汇编即是指将这些执行文件反编译还原成汇编语言或其他高级语言。但通常反编译出来的程序与原程序会存在许多不同,虽然执行效果相同,但程序代码会发生很大的变化,非编程高手很难读懂。 另外,有许多程序也可以进行逆向操作即反编译以求修改,例如Flash的文件生成的SWF文件,也可以被反汇编成Flash原码,但会发现与原程序有很大变化反汇编一般用到的软件 都是 W32Dasm ,W32dasm对于新手 易于上手 操作简单,W32Dasm有很多版本 这里我推荐使用 W32Dasm 无极版 1、我们现在反汇编WebEasyMail的程序文件easymail.exe 2、然后看看PE信息--字符串参考,在搜索栏中输入“序列号输入错误”
确定注册代码位置 再次返回 w32dasm 查找122得到 Possible Reference to String Resource ID=00122: "?鲹e?" 在查找中找Possible Reference to String Resource ID=00122:对应的汇编语言。 mov a,b 把b的值赋给a,使a=b call :调用子程序 ,子程序以ret结为 ret :返回主程序 je或jz :若相等则跳转 jne或jnz :若不相等则跳转 push xx:xx 压栈 pop xx:xx 出栈 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 我们记住调试断点的这个地址
调试(ollydbg) 用到的软件是ollydbg测试程序 1、 打开WebEasyMail 2、 点击右键选择“前往”==》表达输入406F01地址 3、 设置断点 4、 运行 5、 注册观察提示信息6、 F8单步跳过,观察提示信息,能看到注册码, 7、 好了我们找到了 注册码ASCII 后面的 8、 用注册码在运行成功。 但是这个并不是我们的主要目的,我们还要做出属于自己的注册机,相信这个是很多人梦寐以求的事情 步骤八:制作注册机(KEYMAKE) 注册机我们需要的是一个KEYMAKE的软件 因为2.0是演示版而且停止更新了,所以我们用1.73版
因为2.0是演示版而且停止更新了,所以我们用1.73版
