• 标 题:申请加入BCG的破解文章之一 (6千字)
  • 作 者:NYDoll
  • 时 间:2001-5-6 11:45:46
  • 链 接:http://bbs.pediy.com

IrfanView3.36破解手记




作者:娃娃(NYDoll)

软件简介:一个非常优秀的看图软件,即使是跟ACDSee相比也未见逊色多少,软件本是免费软件,即使不注册也没有任何限制,但为了支持作者的继续升级,还是请有能力的朋友注册吧:

破解工具:TRW2000 BW2000
____________________________________________________________________________________________________________________________________

我是在华军下载的汉化版,下载后软件是用ASPACK加国壳的,你不妨用BW2000+TRW2000脱掉他的壳,以方便反汇编,
然后填写注册信息:  Your name: NYDoll          Your Code:38383838        都可以随便填写,但也有一定的限制,请向下看:

设断点 BPX HMEMCPY
F5
按OK,立刻被拦下
BC *
PMODULE
来到这里:

XXX:432FFB          MOV              EDX,[004DEF54]      《----------TRW停在这里
XXX:433001          PUSH            DWORD      0100
XXX:433006          ADD              EDX,0100
XXX:43300C          PUSH            EDX
XXX:43300D          PUSH            DWORD      045C

  按几下F10马上又回到系统领空,于是在次下命令PMODULE,回到程序代码段,应该停在:

XXX:0044B921      TEST            EAX,EAX
XXX:0044B923      JZ                  NEAR  0045051D
XXX:0044B929      LEA              EDI,[ESP+04F8]
XXX:0044B930      OR                ECX,BYTE  -01
XXX:0044B933      REPNE    SCASB
XXX:0044B937      NOT              ECX
XXX:0044B939      DEC              ECX
XXX:0044B93A      CMP              ECX,BYTE  +02                  《----------  注册名的字数必须大于2
XXX:0044B93D      JC                  NEAR  0044B9CA
XXX:0044B943        LEA              EDI,[ESP+04F8]
XXX:0044B94A        OR                ECX,BYTE  -01
XXX:0044B94D      REPNE    SCASB
XXX:0044B94F        NOT              ECX
XXX:0044B951        DEC              ECX
XXX:0044B952        CMP              ECX.BYTE  +55                    《-----------    注册名的位数必须小于85
XXX:0044B955        JA                0044B9CA
XXX:0044B957        LEA              EDI,[ESP+05F8]
XXX:0044B95E        OR              ECX.BYTE    -01
XXX:0044B961        XOR            EDX,EDX
XXX:0044B963        REPNE    SCASB
XXX:0044B965        NOT              ECX
XXX:0044B967        DEC              ECX
XXX:0044B968        TEST            ECX,ECX                              《-----------    判断所输入的注册码位数是否为零
XXX:0044B96A        JNG              0044B9AE
XXX:0044B96C        MOV            AL.[ESP+EDX+05F8]          《--------  程序在这里开始进入一个循环, AL 分别是注册码的每一位
XXX:0044B973        CMP              AL,30
XXX:0044B975          JL                0044B9EB
XXX:0044B977        CMP              AL,39
XXX:0044B979        JNG              0044B980
XXX:0044B97B        MOV              EBX,01
XXX:0044B980          LEA              EDI,[ESP+05F8]                《-----  看到我们输入的  Fuck Code
XXX:0044B987          OR              ECX,BYTE  -01
XXX:0044B98A          XOR            EAX,EAX
XXX:0044B98C        INC              EDX
XXX:0044B98D        REPNE    SCASB
XXX:0044B98F          NOT              ECX
XXX:0044B991          DEC              ECX
XXX:0044B992          CMP              EDX,ECX                          《-----  EDX 为循环次数,ECX为注册码字符个数  用这个对比语句判断循环是否完成
XXX:0044B994          JL                  0044B96C                          《-----  如果 循环次数小于注册码字符数说明循环没有完成 跳到0044B96C处继续判断注册                                   
码是否符合标准
XXX:0044B996          TEST            EBX,EBX
XXX:0044B998          JZ                  0044B9AE                            《----  应该跳
XXX:0044B99A          PUSH            DWORD    0104
XXX:0044B99F          PUSH            DWORD    9CCB
XXX:0044B9A4          PUSH            DWORD    9CCB
XXX:0044B9A9          JMP                004491A1
XXX:0044B9AE          LEA                EDX,[ESP+05F8]
XXX:0044B9B5          LEA                EAX,[ESP+04F8]
XXX:0044B9BC        PUSH            EDX                                《---------  压入Fuck Code
XXX:0044B9BD        PUSH            EAX                                  《---------  压入Name
XXX:0044B9BE        Call                00432D00                      《—————  关键Call 按F8进入
XXX:0044B9C3        ADD                ESP,BYTE  +08
XXX:0044B9C6        TEST              EAX,EAX                      《————— 注册标志 EAX值为0则注册失败  否则视为注册成功!
XXX:0044B9C8        JNZ                0044B9DE                    《————  为0则跳转到出错窗口

------------------------------------------------Call----------------------------------------------------------------
XXX:00432D00        MOV                EAX,[ESP+08]
XXX:00432D04        SUB                ESP,BYTE  +14
XXX:00432D07        PUSH            EBX
XXX:00432D08        PUSH            EBP
XXX:00432D09        PUSH            ESI
XXX:00432D0A        PUSH            EDI
XXX:00432D0B        PUSH            EAX
XXX:00432D0C        XOR                EBX,EBX
XXX:00432D0E        CALL              004A6157
XXX:00432D13          MOV              ESI,[ESP+2C]
XXX:00432D17          MOV              EBP,EAX
XXX:00432D19          MOV              EDI,ESI

... ...              继续按F10向下追:

        XXX:00432D64          LEA                EDX,[ESP+14]
        XXX:00432D68          PUSH            ESI
        XXX:00432D69          LEA                ESI,[EAX+ECX*2]
        XXX:00432D6C          SHL              ESI,03
        XXX:00432D6F          PUSH            ESI
        XXX:00432D70          CALL              004B1244          《———— 如果你跟如入这个Call 你会得到一个中间数据 299248

                接下来就是开始算注册码了  在这里就不详细列出了  有兴趣的Cracker们可以跟进研究研究 非常简单哦
一直按F10到:

        XXX:000B2F75          ADD              DL,30
        XXX:000B2F78          MOV              [ESP+11],DL
        XXX:000B2F7C          LEA                EDX,[ESP+10]
        XXX:000B2F80          PUSH            EDX                          《————  嘣蹦蹦~嘣  终于胜利了 在这里下D EDX看到的就是真正的注册码了  229952408
        XXX:000B2F81          CALL            004A6157
        XXX:000B2F86          ADD              ESP,BYTE  +04
        XXX:000B2F89          XOR              ECX,ECX


              终于搞定了  好累阿  这是我写的第一篇破解  是一个保护比较差的软件 没有办法 谁叫俺水平不济哩  只好捡软骨头吃了  呵呵
  BYEBYE  如果有错误 希望各位前辈指出!!




                 
                                ______________________________________________    娃娃(NYDoll)  —————————————————————————
                                                                          NYDoll@Etang.Com              QQ: 15110296