设为首页
加入收藏
联系我们
电脑入门 | 操作系统 | 工具软件 | 病毒安全 | 平面设计 | 媒体动画 | 网页制作 | 网络编程 | 数 据 库 | 服 务 器 | 程序设计 
认证考试 | 网管大全 | 站长CLUB | 游戏娱乐 | 机械电子 | 学院热门 | 热门源码 | 软件新闻 | 驱动下载 
您当前的位置:藏经阁资源站 -> 病毒安全 -> 软件破解 -> 破解实例 -> 教程内容 退出登录 用户管理
栏目导航
热门教程
· 劲舞团8K舞步 1.7最新舞步 魔神舞步
· [组图] 上网助手反间谍专家火热试用
· [组图] Win2000/XP/2003:系统万能Ghost全攻略
· [组图] Photoshop超酷海报效果
· [图文] 一分钟攻破ADSL 盗遍宽带密码1
· [组图] MATLAB 概 论
· AutoCAD二次开发语言及工具介绍
· [组图] Photoshop合成图:蛋壳-女孩
· [图文] 《仙剑奇侠传4》绝密情报 首度曝光
· [组图] 初学java常用开发工具介绍
· [图文] 将数码照片做成自动放映的Flash
· [图文] [常用]免费短信收发工具串串烧
· [图文] 《上古卷轴4》杂志扫描图抢先看
· 超全!Windows快捷键大全
· Pro/E 功能
· [组图] 用Pro/E画减速机渐开线斜齿圆柱齿轮的一般方法
· [组图] FLASH:《大话李白》创作全过程
· [组图] 使用Visual LISP创建简单的LISP应用程序
· 2004年计算机等级考试二级C语言试题及答案
· [图文] 信不信由你 KMPlayer隐藏着“雷电”
相关教程
· EZ Extract Resource V1.72(1)
· EZ Extract Resource V1.72(2)
· EZ Extract Resource V1.72(3)
· 轻松提取资源 EZ Extract Resource v1.73 国际版 算法..
· 汇编注册机源代码
· [图文] PE Resource Explorer v2.0.0.1 程序及源代码
· Resource Kit辅助工具箱全透视
· X Window 系统使用指南--定义应用程式的预设选项--Res..
· X Window 系统使用指南--实际的使用Resource
Resource Builder 1.1.0 完全破解~~附汇编注册机
作者:佚名  来源:不详  发布时间:2005-6-1 15:28:14  发布人:admin

减小字体 增大字体

软件名称:Resource Builder 1.1.0
下载地址:汉化新世纪
软件简介:
        自称是自Borland Resource WorkShop 4.5后的长久期待??可以直接打开资源文件,可以导入.exe文件并可选择指定的资源以便于修改,修改后只能存为资源格式,如果直接打开表单可以类似exescope一样修改,如果是导入的话,只能看到16进制码。

软件限制:未注册每次进入会提醒注册,功能限制未知
破解目的:
        最近在学汇编编程,很多东西不懂,自己慢慢摸索,应该会用到以上软件,下载后发现没破解,于是自己动手.另外最近我买了一本《Windows环境下汇编语言程序设计》,虽然是讲Tasm的,不过基本的东西都差不多,但是好象还是不够.这本书好象是市面上唯一一本讲Windows下汇编编程的.

开始~~~~~~~这次是用最基本的方法,先hmemcpy,然后s,再bpm,F5....B.oOOM马上在Step 2里的0049D2B5处中断,其实这个程序的注册算法很简单,不过稍不留意的话可能就写不出注册机了,请看~~~~~~~~


==Step 1======================================================================
这里是我后来找到的,其实是调用Step 2的地方

:0049D39B 8B45FC                  mov eax, dword ptr [ebp-04]
:0049D39E E8BDFEFFFF              call 0049D260        <---计算假的注册码(67676767)
:0049D3A3 8BF0                    mov esi, eax        <---结果在eax
:0049D3A5 8D55F8                  lea edx, dword ptr [ebp-08]
:0049D3A8 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:0049D3AE E84597F9FF              call 00436AF8
:0049D3B3 8B45F8                  mov eax, dword ptr [ebp-08]
:0049D3B6 E8A5FEFFFF              call 0049D260        <---计算机器码
:0049D3BB 330598414C00            xor eax, dword ptr [004C4198]<---结果在eax,[004C4198]=CFFF34BC
:0049D3C1 2BF0                    sub esi, eax        <---esi是假注册码计算后的结果
:0049D3C3 757C                    jne 0049D441        <---相等就成功,运行到上一句时将esi改成eax里的值就是永久注册版了

:0049D3C5 33D2                    xor edx, edx
:0049D3C7 B043                    mov al, 43
:0049D3C9 E82E15FFFF              call 0048E8FC
:0049D3CE 8BC8                    mov ecx, eax
:0049D3D0 81F1CE703600            xor ecx, 003670CE

* Possible StringData Ref from Code Obj ->"Length"

注册成功后会在以下注册表里写下标志(已加密)
HKEY_CURRENT_USER\Software\SiComponents\ResourceBuilder\Options\Length

                                  |
:0049D3D6 BA7CD44900              mov edx, 0049D47C

* Possible StringData Ref from Code Obj ->"Options"
                                  |
:0049D3DB B88CD44900              mov eax, 0049D48C
==Step 2====================================================================
为了写注册机,我们必须进入此Call研究它的算法,至于假注册码的计算我就不写了,因为与机器码的计算都是一样的,我们只讨论后者.
注:下面所提数据均为16进制

* Referenced by a CALL at Addresses:
|:0049D39E  , :0049D3B6 
|
:0049D260 55                      push ebp
:0049D261 8BEC                    mov ebp, esp
:0049D263 83C4F4                  add esp, FFFFFFF4
:0049D266 56                      push esi
:0049D267 57                      push edi
:0049D268 8945FC                  mov dword ptr [ebp-04], eax
:0049D26B 8B45FC                  mov eax, dword ptr [ebp-04]
:0049D26E E8A56DF6FF              call 00404018
:0049D273 33C0                    xor eax, eax
:0049D275 55                      push ebp
:0049D276 68F5D24900              push 0049D2F5
:0049D27B 64FF30                  push dword ptr fs:[eax]
:0049D27E 648920                  mov dword ptr fs:[eax], esp
:0049D281 33C0                    xor eax, eax
:0049D283 8945F8                  mov dword ptr [ebp-08], eax
:0049D286 8B45FC                  mov eax, dword ptr [ebp-04]
:0049D289 E8D66BF6FF              call 00403E64
:0049D28E 83F808                  cmp eax, 00000008  <---注册码必须是8位
:0049D291 754C                    jne 0049D2DF
:0049D293 8B45FC                  mov eax, dword ptr [ebp-04]
:0049D296 E8C96BF6FF              call 00403E64
:0049D29B 8BF8                    mov edi, eax
:0049D29D 85FF                    test edi, edi      <---如果没填入注册码就跳走
:0049D29F 7E3E                    jle 0049D2DF
:0049D2A1 BE01000000              mov esi, 00000001  <---这里开始了,edi和esi是计数器
:0049D2A6 C745F418414C00          mov [ebp-0C], 004C4118  <---这个很重要,数据指针

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049D2DD(C)
|
:0049D2AD 33D2                    xor edx, edx
:0049D2AF 8B45F4                  mov eax, dword ptr [ebp-0C]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049D2D5(C)
|
0030:004C4118 61 41 42 57 30 78 4C 39-44 73 64 66 72 76 53 34 aABW0xL9DsdfrvS4  D
0030:004C4128 48 63 5A 44 32 6E 4A 33-65 68 35 53 6B 56 77 67 HcZD2nJ3eh5SkVwg  H
0030:004C4138 4A 53 7A 33 66 43 4E 34-45 48 65 41 35 47 30 57 JSz3fCN4EHeA5G0W  W
0030:004C4148 72 73 57 36 6B 4C 33 37-52 50 31 51 38 70 30 35 rsW6kL37RP1Q8p05  s
0030:004C4158 59 78 76 32 75 4B 35 38-74 77 58 67 6B 6D 33 79 Yxv2uK58twXgkm3y  X
0030:004C4168 69 47 4E 38 55 61 33 39-63 57 4F 58 70 48 32 6B iGN8Ua39cWOXpH2k  3
0030:004C4178 49 6A 6D 50 34 73 38 32-54 65 4C 4B 39 64 68 4F IjmP4s82TeLK9dhO  m
0030:004C4188 4F 70 6C 4C 38 51 30 31-74 32 35 66 75 33 37 77 OplL8Q01t25fu37w  L

:0049D2B2 8B4DFC                  mov ecx, dword ptr [ebp-04]
:0049D2B5 8A4C31FF                mov cl, byte ptr [ecx+esi-01]<---我的机器码是DHWsX3mL,取第一位
:0049D2B9 3A08                    cmp cl, byte ptr [eax]
d eax就可看到上面的数据,最后一列是我的机器码(我加上去的),大家先看看机器码与数据之间有什么关系.这里用机器码的第一位与数据里的第一位比较.

:0049D2BB 7513                    jne 0049D2D0    <---不等就跳,先往下看
:0049D2BD 8BC6                    mov eax, esi    <---循环到第8次时就不跳了,esi=1
:0049D2BF 48                      dec eax
:0049D2C0 8BC8                    mov ecx, eax
:0049D2C2 C1E102                  shl ecx, 02
:0049D2C5 33C0                    xor eax, eax
:0049D2C7 8AC2                    mov al, dl      <---edx=8
:0049D2C9 D3E0                    shl eax, cl
:0049D2CB 0145F8                  add dword ptr [ebp-08], eax  <---[ebp-08]=0,保存结果
:0049D2CE EB07                    jmp 0049D2D7    <---跳出小循环

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049D2BB(C)
|
:0049D2D0 42                      inc edx
:0049D2D1 40                      inc eax
:0049D2D2 80FA10                  cmp dl, 10    <---这是小循环,共10h(20)次
:0049D2D5 75DB                    jne 0049D2B2

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049D2CE(U)
|
:0049D2D7 46                      inc esi        <---计数器加1
:0049D2D8 8345F410                add dword ptr [ebp-0C], 00000010 <---注意数据指针指向了004C4128
:0049D2DC 4F                      dec edi        <---共比较8次
:0049D2DD 75CE                    jne 0049D2AD  <---往上跳比较第二位

最后得到了个结果326A1F08并保存在[ebp-08]处,大家一定要亲自调试下才可清楚看到得到这个结果的整个流程,程序的这个过程好象是在查表,这个结果是经过0049D2BD--0049D2CB这几句得来的,那如果我们要写注册机的话就一定要写出这段的逆算法来,虽然短短几句,但如果按照结果来算好象不可能算得出来,刚开始我是这样想的,但当我看清楚它的关系后一切都变得简单了.我来做个总结:

        数据表        机器码/对应位数      假注册码/计算结果

1. aABW0xL9DsdfrvS4      D (第8位)            6 (第0位)  <---这几个为0的结果是因为我输入的假
2. HcZD2nJ3eh5SkVwg      H (第0位)            7 (第0位)      注册码并没有在数据表中找到
3. JSz3fCN4EHeA5G0W      W (第F位)            6 (第0位)
4. rsW6kL37RP1Q8p05      s (第1位)            7 (第7位)
5. Yxv2uK58twXgkm3y      X (第A位)            6 (第0位)
6. iGN8Ua39cWOXpH2k      3 (第6位)            7 (第0位)
7. IjmP4s82TeLK9dhO      m (第2位)            6 (第0位)
8. OplL8Q01t25fu37w      L (第3位)            7 (第E位)

看到它们之间的关系了吗,其实数据表是分为8个部分的,每20位是一个部分,每个部分相对应着机器码和注册码的一位,上面的代码只不过是将机器码每一位处于对应的数据第几位找出来,就得出了上面的结果.往上看Step 1比较的地方,它将用机器码找到的结果与CFFF34BC相xor,得到FD952BB4,再与用假注册码找到的结果E0007000比较,那么FD952BB4就应该是正确的注册码算出来的结果,而且正确的注册码一定是数据表中的字符串,如果没有注册机,用人工的方法可以找到正确的注册码:0SAWKWdw

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0049D291(C), :0049D29F(C)
|
:0049D2DF 33C0                    xor eax, eax
:0049D2E1 5A                      pop edx
:0049D2E2 59                      pop ecx
:0049D2E3 59                      pop ecx
:0049D2E4 648910                  mov dword ptr fs:[eax], edx
:0049D2E7 68FCD24900              push 0049D2FC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049D2FA(U)
|
:0049D2EC 8D45FC                  lea eax, dword ptr [ebp-04]
:0049D2EF E8D468F6FF              call 00403BC8
:0049D2F4 C3                      ret

==KeyGen====================================================================
附上注册机,将下面代码保存为.rek文件,用注册机编写器编译,注册机编写器1.65测试通过.



.data
szHomePage db "http://www.365hz.net",0
szEmail    db "mailto:ljyljx@163.com",0
szErrMess  db "请输入机器码!",0
szErr      db "机器码不能大于8位!",0

DATA1 db "aABW0xL9DsdfrvS4"
DATA2 db "HcZD2nJ3eh5SkVwg"
DATA3 db "JSz3fCN4EHeA5G0W"
DATA4 db "rsW6kL37RP1Q8p05"
DATA5 db "Yxv2uK58twXgkm3y"
DATA6 db "iGN8Ua39cWOXpH2k"
DATA7 db "IjmP4s82TeLK9dhO"
DATA8 db "OplL8Q01t25fu37w",0
szBuffer db 9 dup(0)
.code
      mov ebx,eax
      invoke lstrlen,eax
      cmp eax,8
      jg ERR
      mov esi,1
      mov edi,8
      sub esp,8
      mov ebp,esp
      lea eax,DATA1
      mov [ebp],eax
      mov [ebp+4],dword ptr 0

START:
      xor edx,edx
      mov eax,dword ptr [ebp]

PRO0:
      mov ecx,ebx
      mov cl,byte ptr [ecx+esi-1]
      cmp cl,byte ptr [eax]
      jne PRO1
      mov eax,esi
      dec eax
      mov ecx,eax
      shl ecx,2
      xor eax,eax
      mov al,dl
      shl eax,cl
      add dword ptr [ebp+4],eax
      jmp PRO2

PRO1:
      inc edx
      inc eax
      cmp dl,10h
      jne PRO0

PRO2:
      inc esi
      add [ebp],dword ptr 10h
      dec edi
      jne START                  ;//这上面基本是照程序搬过来的
      mov eax,0CFFF34BCh
      xor eax,dword ptr [ebp+4]
      mov [ebp+4],eax
      lea esi,DATA1
      mov [ebp],esi
      lea edi,szBuffer
      mov ebx,8
      mov edx,0000000Fh          ;//这里开始逐位查表
      mov ecx,0

PRO3:
      mov esi,[ebp]
      mov eax,[ebp+4]
      and eax,edx
      shr eax,cl
      mov al,byte ptr [esi+eax]
      mov [edi],byte ptr al
      shl edx,4
      add ecx,4
      inc edi
      add [ebp],dword ptr 10h
      dec ebx
      jne PRO3
      lea eax,szBuffer
      add esp,8
      jmp Sam

ERR:
      lea eax,szErr

Sam:

;==Code End================================================================

因时间仓促,如有错漏请指正~~~~~~~~~~~


      _/_/_/
    _/          _/_/_/  _/_/_/  _/_/
    _/_/    _/    _/  _/    _/    _/
        _/  _/    _/  _/    _/    _/
_/_/_/      _/_/_/  _/    _/    _/

                                            Sam.com
                                          9:00 2002-3-22          
[] [返回上一页] [打 印] [收 藏]
∷相关教程评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 
Copyright © 2000-2006 18839.Com. All Rights Reserved .
EMAIL:webmaster@18839.com 联系QQ:63191918 苏ICP备05065193号 带宽支持:三九互联