欢迎来到 嗅灵易学

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

破解过程 (2千字)

破解过程 (2千字)

其实不好意思写出整个的破解过程,因为与blowfish相比,这种方法实在是比较可笑。不过既然1212兄想看,就不怕1212兄笑话,写出来献丑了。
拿来软件,首先用Dasm反汇编了一下,查看deadlist,发现有个地方比较奇怪,就是有个串叫作"regvalida",想当然地认为这里应该是检测注册码的地方。于是动用trw2000,既然用hmemcpy拦不住,就干脆利用dasm里的地址拦截,可是跟进402D25这个call去后发现它不过是将自己输入的注册码前面加上"regvalida",然后自己和"regvalida"进行比较,没什么意思,但是追进下面的Call里去时便进入了mbed.dll去了,然后就可以看见诸如$result=ok,not-ok,endif等等东东,非常象拿script写的,有点看vbscript的感觉。猜了几个地方跳转都是错的。无奈,只得重头再来。
这次想到启动后主画面中右上角有not registered字样,在Deep Finesse.exe里面找了一下,发现果然有,不是图片贴上去的。看看它的周围,净是些<>这样的符号,看起来象xml文件似的,一开始没太注意,当用resource explorer打开Deep Finesse.exe时发现rcdata里面有很多.mbd文件,每个文件的结构都很像xml,于是export了这几个文件,文本编辑器里赫然显示程序的流程,联想到刚才的追踪和认为象script的感觉,看来程序只是调用这些mbd文件里的function名称,而每个function的具体代码可能放在mbed.dll里面。
Search "not registered",发现在main.mbd里面,找到位置后,想想判断是否注册的过程应该在上面一些的地方,果然如此,<check><unlock>这些字样在用trw2000追踪的时候看到过。这里的代码应该很透明了,
    <check>
        handler set dodemo=$param
        logo hide
        serialNo hide
        serialNoBox hide
        serialNoTxt hide
        mbedlet call getserial
        handler if ($result = ok)
            mbedlet set registered=yes  <---- registered应该是全局变量,
                              check通过就设为yes
            mbedlet doDeal "Last Hand.txt 1"
        handler else
            handler if ($dodemo = yes)
                mbedlet doDeal Demo1
            handler else
                mbedlet hideBigLogo
                register.child.serialNo set value=$result
                mbedlet cleanup
                mbedlet buttons hide
                mbedlet statusHide
                pipe hide
                me above
                me show
            handler endif
        handler endif
    </check>
    <unlock>
        mbedlet call regvalida#$register.child.unlockCode.value
        handler if ($result = ok)
            register approved
        handler else
            register.child.errorText show
        handler endif
    </unlock>
    <approved>
        mbedlet set cursor=arrow
        mbedlet set registered=yes  <------ 这里也是。
        thankYouScore play
    </approved>
    加上有些编程知识,把代码换了位置,反正保证文件长度不变就可以了。利用winhex或者ultraedit这类二进制东东,找到原来main.mbd这些代码在exe文件里的位置,将修改过的main.mbd内容覆盖进去。然后运行Deep Finesse.exe,看来像是注册了。
象Deep Finesse这种用类似于script的东东(或许C++的高手们知道此类方法的准确名称)的软件,我还是头一次看见,真是大长见识。
破解完后,感觉有点怪怪的,有一种能够气死谁的感觉。J

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

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

0 0 0 举报
复制成功