如何将EXE安装文件脱壳和破解--之解决办法
步骤1 检测壳
壳的概念: 所谓“壳”就是专门压缩的工具。 这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。 壳的作用: 1.保护程序不被非法修改和反编译。 2.对程序专门进行压缩,以减小文件大小,方便传播和储存。 壳和压缩软件的压缩的区别是 压缩软件只能够压缩程序 而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行 下面来介绍一个检测壳的软件 PEID v0.92 这个软件可以检测出 450种壳 新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。 另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。 支持文件夹批量扫描 我们用PEID对进行扫描 到壳的类型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 说明是UPX的壳 下面进行
步骤2 脱壳
对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。 脱壳成功的标志 脱壳后的文件正常运行,功能没有损耗。 还有一般脱壳后
的文件长度都会大于原文件的长度。 即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。 关于脱壳有手动脱壳和自动脱壳 自动脱壳就是用专门的脱壳机脱 很简单 按几下就 OK了 手动脱壳相对自动脱壳 需要的技术含量微高 这里不多说了 UPX是一种很老而且强大的壳 不过它的脱壳机随处就能到 UPX本身程序就可以通过 UPX 文件名 -d 来解压缩 不过这些需要的 命令符中输入 优点方便快捷 缺点DOS界面 为了让大家省去麻烦的操作 就产生了一种叫 UPX SHELL的外壳软件 UPX SHELL v3.09 UPX 外壳程序! 目的让UPX的脱壳加壳傻瓜化 注:如果程序没有加壳 那么我们就可以省去第二步的脱壳了,直接对软件进行分析了。 脱完后 我们进行
步骤3 运行程序 尝试注册 获取注册相关信息
通过尝试注册 我们发现一个关键的字符串 “序列号输入错误”
步骤4 反汇编 反汇编一般用到的软件 都是 W32Dasm W32dasm对于新手 易于上手 操作简单 W32Dasm有很多版本 这里我推荐使用 W32Dasm 无极版 我们现在反汇编WebEasyMail的程序文件 然后看看能不能到刚才的字符串
步骤5 通过eXeScope这
个软件来查看未能在w32dasm中正确显示的字符串信息 eXeScope v6.50 更改字体,更改菜单,更改对
话框的排列,重写可执行文件的资源,包括(EXE,DLL,OCX)等。是方便强大的工具,可以直接修改用 VC++ 及 DELPHI 编制的程序的资源,包括菜单、对话框、字符串表等 新版可以直接查看 加壳文件的资源 我们打开eXeScope 到如下字串符 122,"序列号输入错误 " 123,"恭喜您成为WebEasyMail正式用户中的一员! " 124,注册成功 125,失败 重点是122
步骤6 再次返回 w32dasm * Possible Reference to String Resource ID=00122: "?鲹e ?" 但是双击后 提示说不到这个字串符 不是没有 是因为 "?鲹e ?"是乱码 w32dasm对于中文显示不是太好 毕竟不是国产软件 先把今天会用到的汇编基本指令跟大家解释一下 mov a,b ;把b的值赋给a,使a=b call :调用子程序 ,子程序以ret结为 ret :返回主程序 je或jz :若相等则跳转 jne或jnz :若不相等则跳转 push xx:xx 压栈 pop xx:xx 出栈 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 我们搜索 Possible Reference to String Resource ID=00122 因为对E文支持很好 我们来到了 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00406F17(C) //跳转来自 406F17 | * Possible Reference to String Resource ID=00125: "1%" | :004070DD 6A7D push 0000007D :004070DF 8D4C2410 lea ecx, dword ptr [esp+10] :004070E3 E8F75A1200 call 0052CBDF * Possible Reference to String Resource ID=00122: "?鲹e ?" | :004070E8 6A7A push 0000007A :004070EA 8D4C2408 lea ecx, dword ptr [esp+08] :004070EE E8EC5A1200 call 0052CBDF 我们来到 :00406F01 8B876C080000 mov eax, dword ptr [edi+0000086
C]这里是对 :00406F07 8B4C2408 mov ecx, dword ptr [esp+08] :00406F0B 50 push eax//这两个eax和ecx入栈就比较让我们怀疑了 :00406F0C 51 push ecx//产生注册码 :00406F0D E8AE381100 call 0051A7C0//这CALL里对注册位应该会有设置 :00406F12 83C40C add esp, 0000000C :00406F15 85C0 test eax, eax// 检测注册位 :00406F17 0F85C0010000 jne 004070DD //不存在注册位 就会跳到4070DD就会出现那个错误的字串符了 我们记住406F01这个地址 接着进行下一步
步骤7 这一步我们进行的是调试 用到的软件是ollydbg 好了我们到了 注册码0012AF04 00FD4A10 ASCII "04893e058f9c1c9fb16764c3b86f78e6" 但是这个并不是我们的主要目的 我们还要做出属于自己的注册机 相信这个是很多人梦寐以求的事情
步骤8 制作注册机 注册机我们需要的是一个KEYMAKE的软件 因为2.0是演示版而且停止更新了 所以我们用1.73版 做一个内存注册机 需要下面几个资料 中断地址:406F0C 中断次数:1 第一字节:51 指令长度:1 好了 一个完美的注册机 就产生了 还不赶快
压缩包密码破解器发给你的朋友 炫耀一下 保证让他迷糊死 佩服得你要死

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。