欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

Help & Manual 3.0.4.619 破解 (15千字)

Help & Manual 3.0.4.619 破解 (15千字)

大家好,写得比较乱,凑和着看看吧。一口气发了几篇,花了不少时间,最近我是不会再玩crack了,不过,我还是会常来论坛转转的,呵呵。
Help & Manual 3.0.4.619 破解笔记
================================
sunrise, 2002-9-26
软件名称:Help & Manual
软件版本:3.0.4.619
软件简介:所见即所得的Help文件制作工具
软件主页:http://www.helpandmanual.com
保护方式:14天使用期限+Nag screen,有简单的反SOFTICE措施
使用工具:dede,ollydbg,hiew
主程序HelpMan_demo.exe未加壳,用PeID检测,报告是delphi程序。这下
dede可派上用场了。用dede反编译HelpMan_demo.exe,经过分析,程序开始
时出现的对话框的form是TFrmAbout
TFrmAbout.FormShow
00593268  55                    push    ebp
00593269  8BEC                  mov    ebp, esp
0059326B  B905000000            mov    ecx, $00000005
00593270  6A00                  push    $00
00593272  6A00                  push    $00
00593274  49                    dec    ecx
00593275  75F9                  jnz    00593270
00593277  51                    push    ecx
00593278  53                    push    ebx
00593279  56                    push    esi
0059327A  8BD8                  mov    ebx, eax
0059327C  33C0                  xor    eax, eax
0059327E  55                    push    ebp
0059327F  68AB345900            push    $005934AB
***** TRY
|
00593284  64FF30                push    dword ptr fs:[eax]
00593287  648920                mov    fs:[eax], esp
* Reference to field TFrmAbout.OFFS_0211
|
0059328A  80BB1102000003        cmp    byte ptr [ebx+$0211], $03
00593291  750D                  jnz    005932A0
* Reference to field TFrmAbout.OFFS_003C
|
00593293  8B533C                mov    edx, [ebx+$3C]
00593296  83C21E                add    edx, +$1E
00593299  8BC3                  mov    eax, ebx
* Reference to: controls.TControl.SetHeight(TControl;System.Integer);
|
0059329B  E88C3BEAFF            call    00436E2C
* Reference to field TFrmAbout.OFFS_0300
|
005932A0  8D8300030000          lea    eax, [ebx+$0300]
* Possible String Reference to: 'http://www.ec-software.com/order.ht
|                                m'
|
005932A6  BAC0345900            mov    edx, $005934C0
* Reference to: system.@LStrAsg;
|
005932AB  E87C0BE7FF            call    00403E2C
* Reference to TDM instance
|
005932B0  A1FCF76A00            mov    eax, dword ptr [$6AF7FC]
005932B5  8B00                  mov    eax, [eax]
* Reference to field TDM.OFFS_006C
|
005932B7  83786C00              cmp    dword ptr [eax+$6C], +$00 ;剩余使用天数<0?
005932BB  0F8CAB000000          jl      0059336C
005932C1  8D45FC                lea    eax, [ebp-$04]
005932C4  50                    push    eax
005932C5  8D4DF8                lea    ecx, [ebp-$08]
* Reference to TDM instance
|
005932C8  A1FCF76A00            mov    eax, dword ptr [$6AF7FC]
005932CD  8B00                  mov    eax, [eax]
* Reference to field TDM.OFFS_0070
|
005932CF  8B4070                mov    eax, [eax+$70]
* Possible String Reference to: 'EvalDue'
|
005932D2  BAF0345900            mov    edx, $005934F0
* Reference to: classes.TStrings.GetValue(TStrings;System.AnsiString):System.AnsiString;
|          or: nmextstr.TExStringList.GetValue(TExStringList;System.AnsiString):System.AnsiString;
|
005932D7  E82007E8FF            call    004139FC
005932DC  8B45F8                mov    eax, [ebp-$08]
005932DF  50                    push    eax
005932E0  8D55EC                lea    edx, [ebp-$14]
* Reference to TDM instance
|
005932E3  A1FCF76A00            mov    eax, dword ptr [$6AF7FC]
005932E8  8B00                  mov    eax, [eax]
* Reference to field TDM.OFFS_006C
|
005932EA  8B406C                mov    eax, [eax+$6C]
* Reference to: sysutils.IntToStr(System.Integer):System.AnsiString;overload;
|
005932ED  E8EA60E7FF            call    004093DC
005932F2  8B45EC                mov    eax, [ebp-$14]
005932F5  8945F0                mov    [ebp-$10], eax
005932F8  C645F40B              mov    byte ptr [ebp-$0C], $0B
005932FC  8D55F0                lea    edx, [ebp-$10]
005932FF  33C9                  xor    ecx, ecx
00593301  58                    pop    eax
|
00593302  E87974E7FF            call    0040A780
00593307  8B55FC                mov    edx, [ebp-$04]
        ;在about对话框上显示剩余的天数
* Reference to control TFrmAbout.PnlEval : TPanel
|
0059330A  8B83DC020000          mov    eax, [ebx+$02DC]
* Reference to: controls.TControl.SetText(TControl;System.String);
|
00593310  E8EF42EAFF            call    00437604
00593315  8D45E8                lea    eax, [ebp-$18]
00593318  50                    push    eax
        以下略。。。
从上面的代码可知,使用天数是存在TDM类对象中传给TFrmAbout.FormShow的,用dede
看看TDM的事件函数:
TDM.DMCreate
005891FC  55                    push    ebp
005891FD  8BEC                  mov    ebp, esp
005891FF  B933000000            mov    ecx, $00000033
00589204  6A00                  push    $00
00589206  6A00                  push    $00
00589208  49                    dec    ecx
00589209  75F9                  jnz    00589204
0058920B  53                    push    ebx
0058920C  56                    push    esi
0058920D  57                    push    edi
0058920E  8945F8                mov    [ebp-$08], eax ;TDM类对象指针
00589211  33C0                  xor    eax, eax
00589213  55                    push    ebp
    略去一些无关代码
* Reference to: sysutils.Date:System.TDateTime;
|
0058948E  E85D19E8FF            call    0040ADF0
* Reference to: system.@TRUNC;
|
00589493  E82896E7FF            call    00402AC0
00589498  8B55E4                mov    edx, [ebp-$1C]
在dede的units info中可以发现 0052FFA0这个地址位于unit:RichEditOLE中
0058949B  E8006BFAFF            call    0052FFA0 ;***计算已经使用的天数,用负数表示
* Reference to GlobalVar_006B817C
|
005894A0  A37C816B00            mov    dword ptr [$6B817C], eax ;保存已经使用的天数
* Reference to DM
|
005894A5  8B45F8                mov    eax, [ebp-$08]
* Reference to field TDM.OFFS_005D
            设置非注册标志。0表示未注册,这是demo版,所以设成未注册。
            修改这里的指令,将设的值改为1,about对话框就是splash screen
            而不是nag screen
|
005894A8  C6405D00              mov    byte ptr [eax+$5D], $00
    下面是随机的反跟踪softice的代码
    随机生成一个0-29之间的整数,如果这个整数>=20,则调用反softice的代码
005894AC  B81E000000            mov    eax, $0000001E
* Reference to: system.@RandInt;
|
005894B1  E8D297E7FF            call    00402C88    
005894B6  83F814                cmp    eax, +$14
005894B9  7C23                  jl      005894DE
005894BB  33D2                  xor    edx, edx
* Reference to DM
|
005894BD  8B45F8                mov    eax, [ebp-$08]
* Reference to : TDM.HasWi95()
|        HasWi95()调用CreateFileA 打开"\\.\SICE"
005894C0  E8B3010000            call    00589678
005894C5  84C0                  test    al, al
005894C7  750E                  jnz    005894D7    ;有就跳
005894C9  33D2                  xor    edx, edx
* Reference to DM
|
005894CB  8B45F8                mov    eax, [ebp-$08]
* Reference to : TDM.HasWiNT()
        HasWiNT()调用CreateFileA 打开"\\.\NTICE"
005894CE  E81D020000            call    005896F0
005894D3  84C0                  test    al, al
005894D5  7407                  jz      005894DE
005894D7  EBFE                  jmp    005894D7    ;发现有softice就死机
* Reference to: system.@Halt0;
|
005894D9  E822A7E7FF            call    00403C00
005894DE  33C0                  xor    eax, eax
005894E0  55                    push    ebp
005894E1  6878955800            push    $00589578
***** TRY
|
005894E6  64FF30                push    dword ptr fs:[eax]
005894E9  648920                mov    fs:[eax], esp
        取程序的路径和文件名
005894EC  8D85A0FEFFFF          lea    eax, [ebp+$FFFFFEA0]
005894F2  50                    push    eax
005894F3  8D9574FEFFFF          lea    edx, [ebp+$FFFFFE74]
* Reference to TApplication instance
|
005894F9  A1A8F76A00            mov    eax, dword ptr [$6AF7A8]
005894FE  8B00                  mov    eax, [eax]
* Reference to: forms.TApplication.GetExeName(TApplication):System.AnsiString;
|
00589500  E81BD4ECFF            call    00456920
00589505  8B8574FEFFFF          mov    eax, [ebp+$FFFFFE74]    ;->程序的路径和文件名
        将取得的文件的扩展名替换为.dpl
0058950B  8D8D78FEFFFF          lea    ecx, [ebp+$FFFFFE78]
* Possible String Reference to: '.dpl'
|
00589511  BA70965800            mov    edx, $00589670
* Reference to: sysutils.ChangeFileExt(System.AnsiString;System.AnsiString):System.AnsiString;
|
00589516  E81504E8FF            call    00409930
0058951B  8B8578FEFFFF          mov    eax, [ebp+$FFFFFE78] ;->扩展名换后的路径和文件名
        查找这个文件
        我看了看,在我的机器上没这个文件
* Reference to: system.@LStrToPChar;
|
00589521  E812ADE7FF            call    00404238
00589526  50                    push    eax
* Reference to: kernel32.FindFirstFileA()
|
00589527  E84CDAE7FF            call    00406F78
0058952C  8BD8                  mov    ebx, eax
0058952E  83FBFF                cmp    ebx, -$01
00589531  743B                  jz      0058956E
00589533  8D45E8                lea    eax, [ebp-$18]
00589536  50                    push    eax
00589537  8D85ACFEFFFF          lea    eax, [ebp+$FFFFFEAC]
0058953D  50                    push    eax
* Reference to: kernel32.FileTimeToLocalFileTime()
|
0058953E  E825DAE7FF            call    00406F68
00589543  85C0                  test    eax, eax
00589545  7421                  jz      00589568
00589547  8D45FC                lea    eax, [ebp-$04]
0058954A  50                    push    eax
0058954B  8D45FE                lea    eax, [ebp-$02]
0058954E  50                    push    eax
0058954F  8D45E8                lea    eax, [ebp-$18]
00589552  50                    push    eax
* Reference to: kernel32.FileTimeToDosDateTime()
|
00589553  E808DAE7FF            call    00406F60
00589558  85C0                  test    eax, eax
0058955A  740C                  jz      00589568
0058955C  8B45FC                mov    eax, [ebp-$04]
* Reference to: sysutils.FileDateToDateTime(System.Integer):System.TDateTime;
|
0058955F  E84009E8FF            call    00409EA4
00589564  DD5DF0                fstp    qword ptr [ebp-$10]
00589567  9B                    wait
00589568  53                    push    ebx
* Reference to: kernel32.FindClose()
|
00589569  E802DAE7FF            call    00406F70
0058956E  33C0                  xor    eax, eax
00589570  5A                    pop    edx
00589571  59                    pop    ecx
00589572  59                    pop    ecx
00589573  648910                mov    fs:[eax], edx
00589576  EB0A                  jmp    00589582
****** EXCEPT
|
00589578  E99F9FE7FF            jmp    0040351C
* Reference to: system.@DoneExcept;
|
0058957D  E8F6A2E7FF            call    00403878
****** END
|
* Reference to DM
|
00589582  8B45F8                mov    eax, [ebp-$08]
* Reference to field TDM.OFFS_005C
|
00589585  C6405C01              mov    byte ptr [eax+$5C], $01
00589589  A17C816B00            mov    eax, dword ptr [$6B817C]
0058958E  83C00E                add    eax, +$0E    ;14天试用期-已经使用的天数(因为用负数表示)
                            ;得到剩余天数
* Reference to DM
|
00589591  8B55F8                mov    edx, [ebp-$08]
* Reference to field TDM.OFFS_006C
|
00589594  89426C                mov    [edx+$6C], eax    ;保存剩余天数
        又随机反跟踪,无聊:)
00589597  B201                  mov    dl, $01
* Reference to DM
|
00589599  8B45F8                mov    eax, [ebp-$08]
* Reference to : TDM.HasWi95()
|
0058959C  E8D7000000            call    00589678
005895A1  84C0                  test    al, al
005895A3  751F                  jnz    005895C4
005895A5  B201                  mov    dl, $01
* Reference to DM
|
005895A7  8B45F8                mov    eax, [ebp-$08]
* Reference to : TDM.HasWiNT()
|
005895AA  E841010000            call    005896F0
005895AF  84C0                  test    al, al
005895B1  7511                  jnz    005895C4
005895B3  33D2                  xor    edx, edx
005895B5  33C0                  xor    eax, eax
|
005895B7  E8E469FAFF            call    0052FFA0
005895BC  84C0                  test    al, al
005895BE  7504                  jnz    005895C4
005895C0  33C0                  xor    eax, eax
005895C2  EB02                  jmp    005895C6
005895C4  B001                  mov    al, $01
* Reference to DM
|
005895C6  8B55F8                mov    edx, [ebp-$08]
* Reference to field TDM.OFFS_005C
|
005895C9  88425C                mov    [edx+$5C], al    ;有softice时,此标志置1
* Reference to DM
|
005895CC  8B45F8                mov    eax, [ebp-$08]
* Reference to field TDM.OFFS_006C
|
005895CF  8B406C                mov    eax, [eax+$6C] ;eax=剩余天数
            剩余天数应该>=0 <=14
005895D2  83F80E                cmp    eax, +$0E
005895D5  7F04                  jnle    005895DB
005895D7  85C0                  test    eax, eax
005895D9  7D0A                  jnl    005895E5
* Reference to DM
|
005895DB  8B45F8                mov    eax, [ebp-$08]
* Reference to field TDM.OFFS_006C
|
005895DE  C7406CFFFFFFFF        mov    dword ptr [eax+$6C], $FFFFFFFF
        当前日期不能早于那个.dpl文件的日期
* Reference to: sysutils.Date:System.TDateTime;
|
005895E5  E80618E8FF            call    0040ADF0
* Reference to: system.@INT;
|
005895EA  E88194E7FF            call    00402A70
005895EF  DBBD68FEFFFF          fstp    tbyte ptr [ebp+$FFFFFE68]
005895F5  9B                    wait
005895F6  DD45F0                fld    qword ptr [ebp-$10]    ;.dpl文件的日期
* Reference to: system.@INT;
|
005895F9  E87294E7FF            call    00402A70
005895FE  DBAD68FEFFFF          fld    tbyte ptr [ebp+$FFFFFE68]
00589604  DED9                  fcompp
00589606  DFE0                  fstsw  ax
00589608  9E                    sahf
00589609  730A                  jnb    00589615
* Reference to DM
|
0058960B  8B45F8                mov    eax, [ebp-$08]
* Reference to field TDM.OFFS_006C
|
0058960E  C7406CFFFFFFFF        mov    dword ptr [eax+$6C], $FFFFFFFF
00589615  33C0                  xor    eax, eax
00589617  5A                    pop    edx
00589618  59                    pop    ecx
00589619  59                    pop    ecx
0058961A  648910                mov    fs:[eax], edx
****** FINALLY
|
* Possible String Reference to: '_^[嬪]?
|
0058961D  683A965800            push    $0058963A
00589622  8D8574FEFFFF          lea    eax, [ebp+$FFFFFE74]
00589628  BA0B000000            mov    edx, $0000000B
* Reference to: system.@LStrArrayClr;
|
0058962D  E8CAA7E7FF            call    00403DFC
00589632  C3                    ret
00589633  E998A1E7FF            jmp    004037D0
00589638  EBE8                  jmp    00589622
****** END
|
0058963A  5F                    pop    edi
0058963B  5E                    pop    esi
0058963C  5B                    pop    ebx
0058963D  8BE5                  mov    esp, ebp
0058963F  5D                    pop    ebp
00589640  C3                    ret

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功