吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9368|回复: 4
收起左侧

[分享] 易语言 4.14 最完美破解 [全过程]

[复制链接]
lovelili008 发表于 2010-8-14 13:04
本帖最后由 lovelili008 于 2010-8-14 13:05 编辑

【软件介绍】:
易语言4.14版相对于4.13更新说明(2009/7/24):
对易语言核心支持库、编译器、开发环境的更新:
    1. 修复了打印机对象的自定义纸张尺寸的支持问题
    2. 修复了打印机对象的打印份数的支持问题
    3. 修复了滑块条的选择长度不能到最大的问题
对其它支持库的更新:
    1. 修改XML解析支持库,解决“XML树.取节点值文本()”返回的文本会失效的BUG。
    2. 修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的BUG。
    3. 修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。
    4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。
    5. 修改扩展界面支持库一,解决树形框项目无法通过鼠标点击进入编辑状态的BUG。
    6. 修改高级表格支持库,解决插入行/插入列在未指定行号/列号的情况下插入位置不正确的BUG。
    7. 修改文本语音转换支持库,增加“机读文本.重新创建并初始化()”方法。
    8. 修改应用接口支持库,增强“取快捷方式目标”命令功能,可以获取目标、参数、启始位置、图标、运行方式、快捷键、备注等信息。
    9. 修改扩展界面支持库三,解决高级选择夹会导致所在窗口的收不到“首次激活”事件的BUG,相应地修改了核心库和开发环境。
    10. 为所有支持库文件统一添加了版本信息。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  半年前就已经写过了一篇[易语言4.13正式版 的破解纪录],但后来网友们反映说写得不够详细...
  有些关键的地方不知道是怎么定位出来的,这次就趁着新论坛开张庆典再来一篇详细点的吧!
  破解过程跟 易语言4.13 版本的时候基本相同,不过这次主要总结3个步骤即可到位~
  ----------------------
  159544386.key        [企业注册版]
  159544386 → [09800000 XOR 00027442] → 0x09827442(十六进制) [硬件代码计算值]
  3A7FEF86D9A344BD279538025A6B881ED798010002DEEA0151B9C722075E0618F6B153ACB49B357E402DF46BB4169E78E7CD6760544CD4C4419373A6AEEA5B2CA46C0CDB3A2CD98E980EF419DBE10EA4F470B097172A44DB547D505DAF6187B8FCC4153A7FE91BEB33BE7FC71913C0FD26F7F6FE36B24C824FCFA51F2795EF0294CDC0C2F9917B370A5DB5F2D95BC05D328D0BA8D28442C2B451D7AE3E25E0585793F9BA8E4CC40460E58F38A49233145220218FEB7371944C5D41184B329739CB70792D6D04823C5AF45FE62DE7A3F6420FFECF6EAD0F8A83D9D21BF6433FABA1732B91CF085F0CDD4F0CA305FED4B717B4D1390B25ADD104578B63D252535BE04E362ADA6820117E8E274E7D93A0605EAD954C3AFFF3C8F4BADE8
  ----------------------
  1.第一步如何找到注册关键位置及修改方法,[企业注册版]KEY的硬件代码[159544386]计算过程...
  //由于我们现在要破解的是 易语言 的硬盘注册方式,所以首先我们查找取硬盘特征关键信息字符 "\\.\PhysicalDrive0"
  ----------------------
  Ultra String Reference, 条目 553
  Address=004314A6
  Disassembly=PUSH e.005868B8
  Text String=\\.\PhysicalDrive0
  //在 [004314A6] 下硬件断点,然后F9运行看看.
  ----------------------
  00431490  /$  81EC 54020000 SUB ESP, 254                             ;  ① 取硬盘硬件码信息
  00431496  |.  53            PUSH EBX
  00431497  |.  33DB          XOR EBX, EBX
  00431499  |.  56            PUSH ESI
  0043149A  |.  53            PUSH EBX                                 ; /hTemplateFile => NULL
  0043149B  |.  53            PUSH EBX                                 ; |Attributes => 0
  0043149C  |.  6A 03         PUSH 3                                   ; |Mode = OPEN_EXISTING
  0043149E  |.  53            PUSH EBX                                 ; |pSecurity => NULL
  0043149F  |.  6A 03         PUSH 3                                   ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
  004314A1  |.  68 000000C0   PUSH C0000000                            ; |Access = GENERIC_READ|GENERIC_WRITE
  004314A6  |.  68 B8685800   PUSH e.005868B8                          ; |\\.\PhysicalDrive0
  004314AB  |.  FF15 5CC25400 CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
  004314B1  |.  8BF0          MOV ESI, EAX
  004314B3  |.  83FE FF       CMP ESI, -1
  004314B6  |.  0F84 C0000000 JE e.0043157C
  ......省略部分代码
  00431569  |> \56            PUSH ESI                                 ; /hObject
  0043156A  |.  FF15 78C25400 CALL DWORD PTR DS:[<&KERNEL32.CloseHandl>; \CloseHandle
  00431570  |.  5F            POP EDI
  00431571  |.  8BC3          MOV EAX, EBX
  00431573  |.  5E            POP ESI
  00431574  |.  5B            POP EBX
  00431575  |.  81C4 54020000 ADD ESP, 254
  0043157B  |.  C3            RETN                                     ; 这里返回到上一层
  ----------------------
  004315B6  |.  8BD0          MOV EDX, EAX
  004315B8  |.  BE 01000000   MOV ESI, 1
  004315BD  |.  85D2          TEST EDX, EDX
  004315BF  |.  75 2E         JNZ SHORT e.004315EF
  ......省略部分代码
  004315F5  |. /74 0A         JE SHORT e.00431601
  004315F7  |. |8BCA          MOV ECX, EDX
  004315F9  |. |F7D9          NEG ECX
  004315FB  |. |1BC9          SBB ECX, ECX
  004315FD  |. |23CE          AND ECX, ESI
  004315FF  |. |8908          MOV DWORD PTR DS:[EAX], ECX
  00431601  |> \8BC2          MOV EAX, EDX
  00431603  |.  5E            POP ESI
  00431604  \.  C3            RETN                                     ; 这里返回到上一层
  ----------------------
  ......................
  00457203  |.  8D4D F8       LEA ECX, [LOCAL.2]
  00457206  |.  51            PUSH ECX
  00457207  |.  E8 A4A3FDFF   CALL e.004315B0                          ;  ① 取硬盘硬件码信息
  0045720C  |.  83C4 04       ADD ESP, 4                               ;  这里出来以后很多花花(⊙o⊙)哦!
  0045720F  |.  8BF0          MOV ESI, EAX                             ;  EAX = 取硬盘特征字()
  ......................
  00457215  |.  85F6          TEST ESI, ESI
  00457217  |.  75 25         JNZ SHORT e.0045723E
  ......................
  0045721C  |.  FF05 18955900 INC DWORD PTR DS:[599518]
  ......................
  00457225  |.  833D 18955900>CMP DWORD PTR DS:[599518], 6
  0045722C  |.  75 10         JNZ SHORT e.0045723E
  ......................
  00457239  |.  BE 73191511   MOV ESI, 11151973
  ......................
  00457241  |.  85F6          TEST ESI, ESI
  00457243  |.  0F84 F8010000 JE e.00457441
  ......................
  00457254  |.  FF15 4CC25400 CALL DWORD PTR DS:[<&KERNEL32.GetTickCou>; [GetTickCount
  0045725A  |.  A3 D8925900   MOV DWORD PTR DS:[5992D8], EAX
  ......................
  00457262  |.  A1 1C8F5900   MOV EAX, DWORD PTR DS:[598F1C]
  00457267  |.  85C0          TEST EAX, EAX
  00457269  |.  74 29         JE SHORT e.00457294
  ......................
  0045726E  |.  56            PUSH ESI
  0045726F  |.  E8 6CF0FFFF   CALL e.004562E0
  00457274  |.  35 9A3B5400   XOR EAX, 543B9A
  00457279  |.  83C4 04       ADD ESP, 4
  0045727C  |.  A3 70935900   MOV DWORD PTR DS:[599370], EAX
  ......................
  00457285  |.  8135 70935900>XOR DWORD PTR DS:[599370], 8912FCD
  0045728F  |.  E9 5A010000   JMP e.004573EE
  00457294  |>  53            PUSH EBX
  00457295  |.  57            PUSH EDI
  ......................
  004572A1  |.  68 DC050000   PUSH 5DC
  004572A6  |.  68 803E0000   PUSH 3E80
  004572AB  |.  68 71020000   PUSH 271
  004572B0  |.  56            PUSH ESI
  004572B1  |.  E8 4A4F0800   CALL e.004DC200                          ;  ② 计算硬盘特征信息
  004572B6  |.  83C4 10       ADD ESP, 10
  004572B9  |.  8945 E0       MOV [LOCAL.8], EAX
  ......................
  004572C7  |.  8BF0          |MOV ESI, EAX
  004572C9  |.  25 FFFF0F00   |AND EAX, 0FFFFF
  004572CE  |.  C1EE 10       |SHR ESI, 10
  004572D1  |.  81E6 F0FF0000 |AND ESI, 0FFF0
  004572D7  |.  33F0          |XOR ESI, EAX
  ......................
  004572DC  |.  68 2C010000   |PUSH 12C
  004572E1  |.  68 401F0000   |PUSH 1F40
  004572E6  |.  68 E2040000   |PUSH 4E2
  004572EB  |.  56            |PUSH ESI
  004572EC  |.  E8 0F4F0800   |CALL e.004DC200                         ;  ② 计算硬盘特征信息
  004572F1  |.  83C4 10       |ADD ESP, 10
  004572F4  |.  8945 E4       |MOV [LOCAL.7], EAX
  ......................
  004572FA  |.  8BD8          |MOV EBX, EAX
  004572FC  |.  81E3 FF000000 |AND EBX, 0FF
  ......................
  00457305  |.  8BC8          |MOV ECX, EAX
  00457307  |.  81E1 000000FF |AND ECX, FF000000
  ......................
  00457311  |.  25 00FF0000   |AND EAX, 0FF00
  ......................
  00457324  |.  BA E44C5900   |MOV EDX, e.00594CE4
  00457329  |>  8B7A FC       |/MOV EDI, DWORD PTR DS:[EDX-4]          ;  [EDX-4] = DS:[00594CE0]=CC051311
  //DS:[00594CE0]此处需要修改内存值,把 CC051311 改成 00000000
  //00594CE0  00 00 00 00                                      ....
  //暂时可以先记录下来不进行修改...
  0045732C  |.  85FF          ||TEST EDI, EDI
  0045732E  |.  74 5F         ||JE SHORT e.0045738F                    ;   必须跳,否则硬盘码计算值则不等于 159544386
  ......................本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  00457337  |.  8B7A FC       ||MOV EDI, DWORD PTR DS:[EDX-4]
  0045733A  |.  33FE          ||XOR EDI, ESI
  ......................
  00457340  |.  337A 08       ||XOR EDI, DWORD PTR DS:[EDX+8]
  ......................
  0045734E  |.  333A          ||XOR EDI, DWORD PTR DS:[EDX]
  ......................
  00457353  |.  3B7A 04       ||CMP EDI, DWORD PTR DS:[EDX+4]
  00457356  |.  74 09         ||JE SHORT e.00457361
  ......................
  0045735C  |.  83C2 10       ||ADD EDX, 10
  0045735F  |.^ EB C8         |\JMP SHORT e.00457329
  ......................
  00457365  |.  8B75 E0       |MOV ESI, [LOCAL.8]
  00457368  |.  68 AC000000   |PUSH 0AC
  0045736D  |.  68 C4090000   |PUSH 9C4
  00457372  |.  68 A00F0000   |PUSH 0FA0
  00457377  |.  56            |PUSH ESI
  00457378  |.  E8 834E0800   |CALL e.004DC200                         ;  ② 计算硬盘特征信息
  0045737D  |.  83C4 10       |ADD ESP, 10
  00457380  |.  33F0          |XOR ESI, EAX
  00457382  |.  8975 E0       |MOV [LOCAL.8], ESI
  ......................
  00457388  |.  8BC6          |MOV EAX, ESI
  0045738A  |.^ E9 2DFFFFFF   \JMP e.004572BC
  ......................
  00457396  |.  33D2          XOR EDX, EDX
  00457398  |.  8A55 E6       MOV DL, BYTE PTR SS:[EBP-1A]
  ......................
  004573C3  |.  33D3          XOR EDX, EBX
  004573C5  |.  24 00         AND AL, 0
  004573C7  |.  C1E2 08       SHL EDX, 8
  004573CA  |.  33D0          XOR EDX, EAX
  004573CC  |.  C1E9 04       SHR ECX, 4
  004573CF  |.  C1E2 0C       SHL EDX, 0C
  004573D2  |.  81E1 0000F00F AND ECX, 0FF00000
  004573D8  |.  33D1          XOR EDX, ECX
  004573DA  |.  0BD6          OR EDX, ESI
  004573DC  |.  81F2 5714C508 XOR EDX, 8C51457
  004573E2  |.  8915 70935900 MOV DWORD PTR DS:[599370], EDX
  ......................
  004573EC  |.  5F            POP EDI
  004573ED  |.  5B            POP EBX
  ......................
  004573F1  |.  8B15 D8925900 MOV EDX, DWORD PTR DS:[5992D8]
  004573F7  |.  8B35 70935900 MOV ESI, DWORD PTR DS:[599370]
  004573FD  |.  33F2          XOR ESI, EDX
  004573FF  |.  8935 70935900 MOV DWORD PTR DS:[599370], ESI
  ......................
  00457408  |.  8135 70935900>XOR DWORD PTR DS:[599370], 8C51457
  ......................
  00457416  |.  B9 488A5900   MOV ECX, e.00598A48
  0045741B  |.  E8 70460500   CALL e.004ABA90                          ;  ③ KEY文件读取
  ......................本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  0045742B  |.  A1 C0905900   MOV EAX, DWORD PTR DS:[5990C0]
  00457430  |.  85C0          TEST EAX, EAX
  00457432  |.  74 07         JE SHORT e.0045743B
  ......................
  0045743F  |.  EB 1F         JMP SHORT e.00457460
  ......................
  00457445  |.  A1 F4925900   MOV EAX, DWORD PTR DS:[5992F4]
  0045744A  |.  68 40714500   PUSH e.00457140                          ; /Timerproc = e.00457140
  0045744F  |.  68 88130000   PUSH 1388                                ; |Timeout = 5000. ms
  00457454  |.  6A 70         PUSH 70                                  ; |TimerID = 70 (112.)
  00457456  |.  8B48 1C       MOV ECX, DWORD PTR DS:[EAX+1C]           ; |
  00457459  |.  51            PUSH ECX                                 ; |hWnd
  0045745A  |.  FF15 94C65400 CALL DWORD PTR DS:[<&USER32.SetTimer>]   ; \SetTimer
  ......................
  0045746B  |.  5E            POP ESI
  0045746C  |>  8BE5          MOV ESP, EBP
  0045746E  |.  5D            POP EBP
  0045746F  \.  C2 1000       RETN 10
  ----------------------
  004DC200  /$  8B4C24 0C     MOV ECX, DWORD PTR SS:[ESP+C]            ;  ② 计算硬盘特征信息
  004DC204  |.  55            PUSH EBP
  004DC205  |.  8B6C24 14     MOV EBP, DWORD PTR SS:[ESP+14]
  004DC209  |.  56            PUSH ESI
  004DC20A  |.  57            PUSH EDI
  004DC20B  |.  8B7C24 14     MOV EDI, DWORD PTR SS:[ESP+14]
  004DC20F  |.  85ED          TEST EBP, EBP
  004DC211  |.  7E 28         JLE SHORT e.004DC23B
  004DC213  |.  8B7424 10     MOV ESI, DWORD PTR SS:[ESP+10]
  004DC217  |.  53            PUSH EBX
  004DC218  |.  8BDD          MOV EBX, EBP
  004DC21A  |>  8BC6          /MOV EAX, ESI
  004DC21C  |.  33D2          |XOR EDX, EDX
  004DC21E  |.  F7F7          |DIV EDI
  004DC220  |.  8BC6          |MOV EAX, ESI
  004DC222  |.  0FAFD1        |IMUL EDX, ECX
  004DC225  |.  895424 14     |MOV DWORD PTR SS:[ESP+14], EDX
  004DC229  |.  33D2          |XOR EDX, EDX
  004DC22B  |.  F7F7          |DIV EDI
  004DC22D  |.  8B5424 14     |MOV EDX, DWORD PTR SS:[ESP+14]
  004DC231  |.  03D0          |ADD EDX, EAX
  004DC233  |.  4B            |DEC EBX
  004DC234  |.  8BF2          |MOV ESI, EDX
  004DC236  |.^ 75 E2         \JNZ SHORT e.004DC21A
  004DC238  |.  5B            POP EBX
  004DC239  |.  EB 04         JMP SHORT e.004DC23F
  004DC23B  |>  8B7424 10     MOV ESI, DWORD PTR SS:[ESP+10]
  004DC23F  |>  C1E1 0A       SHL ECX, 0A
  004DC242  |.  33CE          XOR ECX, ESI
  004DC244  |.  33CF          XOR ECX, EDI
  004DC246  |.  5F            POP EDI
  004DC247  |.  8BC1          MOV EAX, ECX
  004DC249  |.  5E            POP ESI
  004DC24A  |.  C1E0 04       SHL EAX, 4
  004DC24D  |.  33C5          XOR EAX, EBP
  004DC24F  |.  5D            POP EBP
  004DC250  |.  C1E0 14       SHL EAX, 14
  004DC253  |.  33C1          XOR EAX, ECX
  004DC255  \.  C3            RETN
本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
//此处需要修改一下返回值,修改如下:
  //004DC255   . /E9 B6EF0600   JMP e.0054B210
  //0054B210   > \8035 80825900>XOR BYTE PTR DS:[598280], 0FF          ;  标记是否返回计算硬件代码
  //0054B217   .  74 05         JE SHORT e.0054B21E
  //0054B219   .  B8 42740200   MOV EAX, 27442                         ;  硬件代码后5位
  //0054B21E   >  C3            RETN
  //到此,第一步分析和破解基本完成,保存修改内容后先不要重新载入OD.
  //用UE或WinHex修改[00594CE0-00400000=00194CE0]此处修改内容,把 "11 13 05 CC" 改成 "00 00 00 00"
  //修改好以后保存文件,再使用OD重新载入!本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  //此时,[F9]运行后,易语言会出现"系统执行文件被非法修改,请检查病毒并重新安装!"的文件校验错误提示...
  ----------------------
  2.第二步如何定位文件校验关键位置及修改方法...
  //因为修改后的主程序在运行时会出现信息框提示,那最简单的方法也就是直接API断点: BP MessageBoxA
  ----------------------
  004317AF  |.  53            PUSH EBX                                 ; /Style
  004317B0  |.  50            PUSH EAX                                 ; |Title
  004317B1  |.  51            PUSH ECX                                 ; |Text
  004317B2  |.  57            PUSH EDI                                 ; |hOwner
  004317B3  |.  FF15 80C65400 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
  004317B9  |.  8BF0          MOV ESI, EAX
  0012F00C   004317B9  /CALL 到 MessageBoxA 来自 e.004317B3
  0012F010   00000000  |hOwner = NULL
  0012F014   01096EE8  |Text = "系统执行文件被非法修改,请检查病毒并重新安装!"
  0012F018   01096F38  |Title = "警告:"
  0012F01C   00000010  \Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  //断点停下来后我们返回跟踪
  ----------------------
  0045F493   > \E8 A8BC0700   CALL e.004DB140
  0045F498   .  83C4 04       ADD ESP, 4                               ;  返回到这里后,往上看跳转判断
  0045EABF   .  8BCB          MOV ECX, EBX
  0045EAC1   .  E8 EAA1FFFF   CALL e.00458CB0                          ;  ① 文件校验CALL
  0045EAC6   .  85C0          TEST EAX, EAX
  0045EAC8   . /75 0A         JNZ SHORT e.0045EAD4                     ;  文件校验正确则跳
  0045EACA   .  68 64A75800   PUSH e.0058A764
  0045EACF   .  E9 BF090000   JMP e.0045F493
  ----------------------
  00458CB0  /$  55            PUSH EBP
  00458CB1  |.  8BEC          MOV EBP, ESP
  00458CB3  |.  6A FF         PUSH -1
  00458CB5  |.  68 38FC5300   PUSH e.0053FC38                          ;  SE 处理程序安装
  00458CBA  |.  64:A1 0000000>MOV EAX, DWORD PTR FS:[0]
  00458CC0  |.  50            PUSH EAX
  00458CC1  |.  64:8925 00000>MOV DWORD PTR FS:[0], ESP
  00458CC8  |.  81EC C40F0000 SUB ESP, 0FC4
  00458CCE  |.  53            PUSH EBX
  00458CCF  |.  56            PUSH ESI
  00458CD0  |.  57            PUSH EDI
  00458CD1  |.  8BF1          MOV ESI, ECX
  00458CD3  |.  8965 F0       MOV [LOCAL.4], ESP
  00458CD6  |.  8975 EC       MOV [LOCAL.5], ESI
  ......................
  00458DA4  |> \3B7C9D D4     |CMP EDI, DWORD PTR SS:[EBP+EBX*4-2C]    ;   在此记录 EDI 的值及 SS:[EBP+EBX*4-2C] 的值
  00458DA8  |.  75 11         |JNZ SHORT e.00458DBB
  00458DAA  |.  8B449D E4     |MOV EAX, DWORD PTR SS:[EBP+EBX*4-1C]
  00458DAE  |.  85C0          |TEST EAX, EAX
  00458DB0  |.  75 09         |JNZ SHORT e.00458DBB
  00458DB2  |.  8B75 EC       |MOV ESI, [LOCAL.5]
  00458DB5  |.  43            |INC EBX
  00458DB6  |.^ E9 6FFFFFFF   \JMP e.00458D2A
  ----------------------
  堆栈 SS:[0012FBC0]=003EDA14                                          ;  原主程序文件校验值 [1]
  EDI=000C64FE                                                         ;  现修改程序文件校验值 [1]
  
  堆栈 SS:[0012FBC4]=0023D5F1                                          ;  原主程序文件校验值 [2]
  EDI=0047E5F1                                                         ;  现修改程序文件校验值 [2]
  ----------------------
//记录完毕两个校验值以后,关闭OD~ 是用UE或WinHex工具打开主程序并查找十六进制 "14DA3E00" 和 "F1D52300"
  //找到以后,直接对应修改为现修改程序文件校验值 "FE640C00" 和 "F1E54700",最好还是把修改地址也记录一下,因为一会还需要用到!
  //修改完成后,保存文件,运行主程序看看...O(∩_∩)O哈!没有提示了,而且也成功注册了,第二步就算完成了~
  //但先别开心,因为易语言还有一个比较隐蔽的内存校验,如果不破解这个校验的话,所编译出来的程序是不会正常的!
本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  ----------------------
  3.第三步,定位内存校验关键位置及修改方法...
  //以前有些易语言破解版出现编译程序不稳定的情况,就都是由于内存校验这部分在作怪!
  ----------------------
  //用OD重新载入 [原版的主程序],然后直接在 OEP 处下 "内存访问" 断点...本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  //下完内存断点以后,并我们把之前所有的断点都取消,然后[F9]运行看看~
  ----------------------
  00F29131    8A68 01         MOV CH, BYTE PTR DS:[EAX+1]              ; 内存断点在此处停下来了 [dp1.00F29131]
  00F29134    8A50 FF         MOV DL, BYTE PTR DS:[EAX-1]
  00F29137    8A08            MOV CL, BYTE PTR DS:[EAX]
  00F29139    83C0 04         ADD EAX, 4
  00F2913C    C1E1 08         SHL ECX, 8
  00F2913F    0BCA            OR ECX, EDX
  00F29141    33D2            XOR EDX, EDX
  00F29143    8A50 FA         MOV DL, BYTE PTR DS:[EAX-6]
  00F29146    83C6 04         ADD ESI, 4
  00F29149    C1E1 08         SHL ECX, 8
  00F2914C    0BCA            OR ECX, EDX
  00F2914E    894E FC         MOV DWORD PTR DS:[ESI-4], ECX
  00F29151    8D0C07          LEA ECX, DWORD PTR DS:[EDI+EAX]
  00F29154    3BCD            CMP ECX, EBP
  00F29156  ^ 72 D5           JB SHORT dp1.00F2912D
  00F29158    5F              POP EDI
  00F29159    5E              POP ESI
  00F2915A    5D              POP EBP
  00F2915B    C2 0C00         RETN 0C                                  ; 返回
  //一直返回到主程序执行代码内存位置为止,本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  ----------------------
  004989DC  |.  8B4C24 28     MOV ECX, DWORD PTR SS:[ESP+28]
  004989E0  |.  8B5424 24     MOV EDX, DWORD PTR SS:[ESP+24]
  004989E4  |.  51            PUSH ECX
  004989E5  |.  8B4C24 24     MOV ECX, DWORD PTR SS:[ESP+24]
  004989E9  |.  52            PUSH EDX
  004989EA  |.  51            PUSH ECX
  004989EB  |.  FFD0          CALL EAX                                 ;  CALL dp1.MGetMD5
  004989ED  |.  8D4C24 08     LEA ECX, DWORD PTR SS:[ESP+8]            ;  返回到此处
  004989F1  |.  C74424 18 FFF>MOV DWORD PTR SS:[ESP+18], -1
  //现在找到了取内存校验值的位置了,往上面下个硬件断点,然后再重新载入 [已破解过的主程序] 运行分析看看...
  ----------------------
  00498940  /$  6A FF         PUSH -1                                  ;  取程序内存数据MD5
  00498942  |.  68 C83F5400   PUSH e.00543FC8                          ;  SE 处理程序安装
  00498947  |.  64:A1 0000000>MOV EAX, DWORD PTR FS:[0]
  0049894D  |.  50            PUSH EAX
  0049894E  |.  64:8925 00000>MOV DWORD PTR FS:[0], ESP
  00498955  |.  83EC 08       SUB ESP, 8
  00498958  |.  56            PUSH ESI
  00498959  |.  8BF1          MOV ESI, ECX
  0049895B  |.  57            PUSH EDI
  0049895C  |.  68 742C5700   PUSH e.00572C74                          ;  ASCII "lib"
  00498961  |.  8D86 94080000 LEA EAX, DWORD PTR DS:[ESI+894]
  00498967  |.  8D4C24 10     LEA ECX, DWORD PTR SS:[ESP+10]
  0049896B  |.  50            PUSH EAX
  0049896C  |.  51            PUSH ECX
  0049896D  |.  E8 5DFE0700   CALL e.005187CF
  00498972  |.  68 D8AB5800   PUSH e.0058ABD8                          ;  ASCII "\dp1.fne"
  00498977  |.  8D5424 0C     LEA EDX, DWORD PTR SS:[ESP+C]
  0049897B  |.  50            PUSH EAX
  0049897C  |.  52            PUSH EDX
  0049897D  |.  C74424 24 000>MOV DWORD PTR SS:[ESP+24], 0
  00498985  |.  E8 45FE0700   CALL e.005187CF
  0049898A  |.  8D4C24 0C     LEA ECX, DWORD PTR SS:[ESP+C]
  0049898E  |.  C64424 18 02  MOV BYTE PTR SS:[ESP+18], 2
  00498993  |.  E8 EEFB0700   CALL e.00518586
  00498998  |.  8B7C24 2C     MOV EDI, DWORD PTR SS:[ESP+2C]
  0049899C  |.  85FF          TEST EDI, EDI
  0049899E  |.  74 07         JE SHORT e.004989A7
  004989A0  |.  8BCF          MOV ECX, EDI
  004989A2  |.  E8 6AFB0700   CALL e.00518511
  004989A7  |>  8B86 DC090000 MOV EAX, DWORD PTR DS:[ESI+9DC]
  004989AD  |.  85C0          TEST EAX, EAX
  004989AF  |.  75 11         JNZ SHORT e.004989C2
  004989B1  |.  8B4424 08     MOV EAX, DWORD PTR SS:[ESP+8]
  004989B5  |.  50            PUSH EAX                                 ; /FileName
  004989B6  |.  FF15 2CC45400 CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
  004989BC  |.  8986 DC090000 MOV DWORD PTR DS:[ESI+9DC], EAX
  004989C2  |>  8BB6 DC090000 MOV ESI, DWORD PTR DS:[ESI+9DC]
  004989C8  |.  85F6          TEST ESI, ESI
  004989CA  |.  74 4A         JE SHORT e.00498A16
  004989CC  |.  68 90065900   PUSH e.00590690                          ; /ProcNameOrOrdinal = "MGetMD5"
  004989D1  |.  56            PUSH ESI                                 ; |hModule
  004989D2  |.  FF15 30C45400 CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress
  004989D8  |.  85C0          TEST EAX, EAX
  004989DA  |.  74 3A         JE SHORT e.00498A16
  004989DC  |.  8B4C24 28     MOV ECX, DWORD PTR SS:[ESP+28]
  004989E0  |.  8B5424 24     MOV EDX, DWORD PTR SS:[ESP+24]
  004989E4  |.  51            PUSH ECX
  004989E5  |.  8B4C24 24     MOV ECX, DWORD PTR SS:[ESP+24]
  004989E9  |.  52            PUSH EDX
  004989EA  |.  51            PUSH ECX
  004989EB  |.  FFD0          CALL EAX                                 ;  CALL dp1.MGetMD5
  //当 [ESP]=00401000 时注意把所有修改过的代码及断点取消,并把正确的MD5值记录下来!
  //0012F354   00401000  校验起始指针,本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  //0012F358   0014A20A  校验数据大小
  //0012F35C   0012F398  ASCII "92070940bbb01c83641fcef4758b5a72"
  //易语言 4.14 对应正确的MD5值 92070940bbb01c83641fcef4758b5a72
  004989ED  |.  8D4C24 08     LEA ECX, DWORD PTR SS:[ESP+8]            ;  返回到此处
  004989F1  |.  C74424 18 FFF>MOV DWORD PTR SS:[ESP+18], -1
  004989F9  |.  E8 88FB0700   CALL e.00518586
  004989FE  |.  5F            POP EDI
  004989FF  |.  B8 01000000   MOV EAX, 1
  00498A04  |.  5E            POP ESI
  00498A05  |.  8B4C24 08     MOV ECX, DWORD PTR SS:[ESP+8]
  00498A09  |.  64:890D 00000>MOV DWORD PTR FS:[0], ECX
  00498A10  |.  83C4 14       ADD ESP, 14
  00498A13  |.  C2 1000       RETN 10
  00498A16  |>  85FF          TEST EDI, EDI
  00498A18  |.  74 32         JE SHORT e.00498A4C
  00498A1A  |.  8B5424 08     MOV EDX, DWORD PTR SS:[ESP+8]
  00498A1E  |.  8D4424 2C     LEA EAX, DWORD PTR SS:[ESP+2C]
  00498A22  |.  52            PUSH EDX
  00498A23  |.  68 7C065900   PUSH e.0059067C
  00498A28  |.  50            PUSH EAX
  00498A29  |.  E8 D2620400   CALL e.004DED00
  00498A2E  |.  83C4 0C       ADD ESP, 0C
  00498A31  |.  50            PUSH EAX
  00498A32  |.  8BCF          MOV ECX, EDI
  00498A34  |.  C64424 1C 03  MOV BYTE PTR SS:[ESP+1C], 3
  00498A39  |.  E8 35FC0700   CALL e.00518673
  00498A3E  |.  8D4C24 2C     LEA ECX, DWORD PTR SS:[ESP+2C]
  00498A42  |.  C64424 18 02  MOV BYTE PTR SS:[ESP+18], 2
  00498A47  |.  E8 3AFB0700   CALL e.00518586
  00498A4C  |>  8D4C24 08     LEA ECX, DWORD PTR SS:[ESP+8]
  00498A50  |.  C74424 18 FFF>MOV DWORD PTR SS:[ESP+18], -1
  00498A58  |.  E8 29FB0700   CALL e.00518586
  00498A5D  |.  8B4C24 10     MOV ECX, DWORD PTR SS:[ESP+10]
  00498A61  |.  5F            POP EDI
  00498A62  |.  33C0          XOR EAX, EAX
  00498A64  |.  5E            POP ESI
  00498A65  |.  64:890D 00000>MOV DWORD PTR FS:[0], ECX
  00498A6C  |.  83C4 14       ADD ESP, 14
  00498A6F  \.  C2 1000       RETN 10
  //我们就在 [004989EB] 此处进行破解修改吧,O(∩_∩)O~
  //记得是修改 [已经破解过] 的那个主程序文件噢...本文原创于破解动画吧论坛, 转载请注明作者并保持文章的完整, 谢谢!
  004989EB   . /E9 30280B00   JMP e_cr_4_1.0054B220
  004989F0     |90            NOP
  0054B220   > \FFD0          CALL EAX
  0054B222   .  8D4C24 08     LEA ECX, DWORD PTR SS:[ESP+8]
  0054B226   .  3E:817C24 F4 >CMP DWORD PTR DS:[ESP-C], e.00401000     ;  入口地址
  0054B22F   .  75 3E         JNZ SHORT e.0054B26F
  0054B231   .  3E:8B7C24 FC  MOV EDI, DWORD PTR DS:[ESP-4]
  0054B236   .  C707 39323037 MOV DWORD PTR DS:[EDI], 37303239
  0054B23C   .  C747 04 30393>MOV DWORD PTR DS:[EDI+4], 30343930
  0054B243   .  C747 08 62626>MOV DWORD PTR DS:[EDI+8], 30626262
  0054B24A   .  C747 0C 31633>MOV DWORD PTR DS:[EDI+C], 33386331
  0054B251   .  C747 10 36343>MOV DWORD PTR DS:[EDI+10], 66313436
  0054B258   .  C747 14 63656>MOV DWORD PTR DS:[EDI+14], 34666563
  0054B25F   .  C747 18 37353>MOV DWORD PTR DS:[EDI+18], 62383537
  0054B266   .  C747 1C 35613>MOV DWORD PTR DS:[EDI+1C], 32376135
  0054B26D   .  33FF          XOR EDI, EDI
  0054B26F   >^ E9 7DD7F4FF   JMP e.004989F1
  //修改完毕以后记得保存,不然白做了...
  //最后我们还得重复一次 第二步 的文件校验值的修改!
  ----------------------
  堆栈 SS:[0012FBC0]=000C64FE                                          ;  原主程序文件校验值 [1]
  EDI=00135283                                                         ;  现修改程序文件校验值 [1]
  堆栈 SS:[0012FBC4]=0047E5F1                                          ;  原主程序文件校验值 [2]
  EDI=0047E5F1                                                         ;  现修改程序文件校验值 [1]
  ----------------------
//到此为止...整个破解过程已经结束了~
  //欢迎各位大侠们对此破解进行完美性的测试,也希望能与大家多多交流...
  //授人以鱼,不如授之以渔,授人以鱼只救一时之急,授人以渔则可解一生之需。
  //此次我就偷懒一下,不把破解好的文件发出来共享了,就只分享一下我的破解过程!
  //也希望能让你们有一个亲自动手学习的机会!

--------------------------------------------------------------------------------
【经验总结】
  1.修改程序取硬盘特征数值的算法过程,实现欺骗注册;
  2.修改程序对自身文件校验的两个值;
  3.替换主程序内存校验值,实现欺骗校验取值,并再次修改程序自身文件校验值!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

vivenshaw 发表于 2010-8-14 13:12
好复杂啊,我看都晕了,楼主“厉害”
love、you 发表于 2010-8-14 13:22
xie83544109 发表于 2010-8-14 13:42
lpstudio 发表于 2010-8-14 14:30
这篇文章确实要认真学习一下。  谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 21:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表