题       目:菜鸟获取Talisman Desktop 2.3 注册码 (build 2304)
软件功能:
Windows 95/98/NT/2000/XP的桌面管理软件和外壳程序。它可以把标准桌面隐藏起来,它有自己的启动按钮

,系统托盘,任务栏和启动菜单等。你可以在这个Talisman桌面环境内建立任意多的对象类型,绑定任意内部

Talisman命令或者运行任何程序,可以添加背景图片,事件声音,所有设置都保存在一个方案内,当然可以建

立多个方案咯。总之功能还是不错的,去试试就知道了。
破解目的:算出注册码,解除30天试用限制。
算法强度:弱
适合水平:菜鸟练手
使用工具:TRW,FI
引    子:
    今天受到6767的1.76版的启发,刚好我的《电脑爱好者2002》合订本光盘内有这个软件的2.3版本的。我

正好可以拿来练手,不到20分钟就搞定,然后用了30分钟写了这篇破文,耽误您宝贵时间阅读此文,希望对菜

鸟有丁点的帮助和裨益!!菜鸟就是通过不断积累经验,勤学苦练,然后变成“老鸟”就是大侠了。下面就开

始啦:)

    先用FI查看一下这个程序有没有“甲克”,把这个程序复制进FI的目录,双击FI打开一个DOS窗口,然后

按ENTER键即可显示结果了,还好,这个软件比较友善,没有带壳,用DELPHI开发的。现在双击运行这个

Talisman,当然原来的桌面被这个新桌面替换了,单击它的左下角的[开始]按钮,单击注册命令弹出一个窗口

,输入用户名bigpig,注册码78787878,我跟看雪论坛的大侠学的这个注册码。;)  Ctrl+N 唤出TRW,下万

能断点 bpx  hmemcpy,pmodule返回主程序领空,bd* 屏蔽所有断点,因为离真正的代码处还有些距离,要

按一阵子F10,你就发现来到如下代码处:

0167:0047B58F 837DF400         CMP      DWORD [EBP-0C],BYTE +00     //比较注册码是否为0,如

果是则OVER
0167:0047B593 0F8460010000     JZ       NEAR 0047B6F9                  
0167:0047B599 8D55F0           LEA      EDX,[EBP-10]
0167:0047B59C 8B83E4020000     MOV      EAX,[EBX+02E4]
0167:0047B5A2 E8F1FAFAFF       CALL     0042B098
0167:0047B5A7 837DF000         CMP      DWORD [EBP-10],BYTE +00
0167:0047B5AB 0F8448010000     JZ       NEAR 0047B6F9
0167:0047B5B1 8D55F4           LEA      EDX,[EBP-0C]
0167:0047B5B4 8B83E0020000     MOV      EAX,[EBX+02E0]
0167:0047B5BA E8D9FAFAFF       CALL     0042B098
0167:0047B5BF 8B45F4           MOV      EAX,[EBP-0C]
0167:0047B5C2 E8F1CBF8FF       CALL     004081B8            //F8跟进去,发现把输入的注册码变

换为16进制数78787878->4b23526
0167:0047B5C7 8945EC           MOV      [EBP-14],EAX         //这个16进制数就在EAX内
0167:0047B5CA DB45EC           FILD     DWORD [EBP-14]       //浮点指令, [EBP-14] 内容进栈

。      
0167:0047B5CD E8EE73F8FF       CALL     004029C0
0167:0047B5D2 8945FC           MOV      [EBP-04],EAX
0167:0047B5D5 8D55F8           LEA      EDX,[EBP-08]
0167:0047B5D8 8B83E4020000     MOV      EAX,[EBX+02E4]
0167:0047B5DE E8B5FAFAFF       CALL     0042B098             //取用户名长度,如bigpig就是6
0167:0047B5E3 33F6             XOR      ESI,ESI
0167:0047B5E5 8B45F8           MOV      EAX,[EBP-08]
0167:0047B5E8 E82787F8FF       CALL     00403D14
0167:0047B5ED 85C0             TEST     EAX,EAX
0167:0047B5EF 7E13             JNG      0047B604
0167:0047B5F1 BA01000000       MOV      EDX,01              //从这里到47B602就是计算把用户名

的ASIICI码依次求和,送ESI,bigpig的和值为272H
0167:0047B5F6 8B4DF8           MOV      ECX,[EBP-08]
0167:0047B5F9 0FB64C11FF       MOVZX    ECX,BYTE [ECX+EDX-01]     
0167:0047B5FE 03F1             ADD      ESI,ECX
0167:0047B600 42               INC      EDX
0167:0047B601 48               DEC      EAX
0167:0047B602 75F2             JNZ      0047B5F6
0167:0047B604 8975EC           MOV      [EBP-14],ESI      //保存和值
0167:0047B607 DB45EC           FILD     DWORD [EBP-14]    //浮点指令, [EBP-14] 内容进栈。
0167:0047B60A E8B173F8FF       CALL     004029C0           //把结果送EAX
0167:0047B60F 69C009030000     IMUL     EAX,EAX,0309   //该命令格式不要被迷惑,实际很简单,就

是EAX=EAX*309H,现在EAX=76C02,十进制为486402
0167:0047B615 8BF0             MOV      ESI,EAX           //送回ESI
0167:0047B617 3B75FC           CMP      ESI,[EBP-04]      //比较从用户名计算的值和假注册码运

算结果,当然一致就PASS,否则就OVER。
0167:0047B61A 0F85BF000000     JNZ      NEAR 0047B6DF    //如果跳就完

  //下面代码都是把你的用户名等信息写入注册表内。HU\.Default\Software\Lighttek\Talisman
0167:0047B620 B201             MOV      DL,01                       
0167:0047B622 A198F04400       MOV      EAX,[0044F098]
0167:0047B627 E8AC3BFDFF       CALL     0044F1D8
0167:0047B62C 8BF0             MOV      ESI,EAX
0167:0047B62E B101             MOV      CL,01
0167:0047B630 BA3CB74700       MOV      EDX,0047B73C
0167:0047B635 8BC6             MOV      EAX,ESI
0167:0047B637 E8983CFDFF       CALL     0044F2D4
*
*节省空间和时间,这里略去10几行指令
*
0167:0047B66F 8945EC           MOV      [EBP-14],EAX
0167:0047B672 DB45EC           FILD     DWORD [EBP-14]
0167:0047B675 83C4F8           ADD      ESP,BYTE -08
0167:0047B678 DD1C24           FSTP     QWORD [ESP]  //浮点保存指令,把栈顶临时浮点数弹出到

ST(0),然后变为整数保存到目标地址[ESP]。
0167:0047B67B 9B               WAIT    
0167:0047B67C BA74B74700       MOV      EDX,0047B774
*
*节省空间和时间,这里略去10几行指令
*
0167:0047B6C2 BA2C010000       MOV      EDX,012C
0167:0047B6C7 A138A94900       MOV      EAX,[0049A938]
0167:0047B6CC E8F7F1FAFF       CALL     0042A8C8
0167:0047B6D1 A1B49C4900       MOV      EAX,[00499CB4]
0167:0047B6D6 8B00             MOV      EAX,[EAX]
0167:0047B6D8 33D2             XOR      EDX,EDX
0167:0047B6DA 89500C           MOV      [EAX+0C],EDX
0167:0047B6DD EB1A             JMP      SHORT 0047B6F9
//前面0047B61A处如果不为0,则跳到这里,出现错误提示窗口!!
0167:0047B6DF B201             MOV      DL,01
0167:0047B6E1 8B83FC020000     MOV      EAX,[EBX+02FC]
0167:0047B6E7 E8C4F8FAFF       CALL     0042AFB0
0167:0047B6EC B201             MOV      DL,01
0167:0047B6EE 8B8300030000     MOV      EAX,[EBX+0300]
0167:0047B6F4 E87FF8FCFF       CALL     0044AF78
//:0047B6DD处的JMP跳到这里,Congratulation!!
0167:0047B6F9 33C0             XOR      EAX,EAX
0167:0047B6FB 5A               POP      EDX
0167:0047B6FC 59               POP      ECX
0167:0047B6FD 59               POP      ECX
0167:0047B6FE 648910           MOV      [FS:EAX],EDX
0167:0047B701 682BB74700       PUSH     DWORD 0047B72B
0167:0047B706 8D45E8           LEA      EAX,[EBP-18]
0167:0047B709 E88A83F8FF       CALL     00403A98
0167:0047B70E 8D45F0           LEA      EAX,[EBP-10]
0167:0047B711 BA02000000       MOV      EDX,02
0167:0047B716 E8A183F8FF       CALL     00403ABC
0167:0047B71B 8D45F8           LEA      EAX,[EBP-08]
0167:0047B71E E87583F8FF       CALL     00403A98
=========================================
后记:
这个小程序用了20分钟就搞定,我认为高手大概3分钟就搞定,谁让我是菜鸟呢?然后用30分钟写了这个教程

。这个软件的保护力度竟然连许多Crackeme程序都不如。不知这个作者怎么想的???正好给菜鸟练手了!

总结:这个算法实在简单:
(用户名的ASCII码之和)*309H->变成16进制数即可。
如:bigpig的ASCII码和=62h+69h+67h+70h+69h+67h=272h->十进制486402
所以结果为:
bigpig
486402

另外:0047B60F处的IMUL    EAX,EAX,0309 格式的功能是EAX*309->EAX
                                           (1)    (2)                                 (2)  

         (1)

任何建议Emailto:  qduwg@163.com

感谢:看雪大侠的鼓励!

  • 标 题: 答复
  • 作 者:qduwg
  • 时 间:2005-12-29 16:40

由于排版错误,最后几行应该如下:抱歉!

另外:0047B60F处的IMUL    EAX,EAX,0309 格式的功能是EAX*309->EAX
                         (1)(2)                  (2)      (1)

qduwg

多提意见!