• 标 题:SuperCapture 3.04 破解历程---半小时 (5千字)
  • 作 者:Banhouse
  • 时 间:2002-2-14 19:49:56
  • 链 接:http://bbs.pediy.com

SuperCapture 3.04 破解历程---半小时

2002年1月10日破解
软件名称:SuperCapture 3.04
软件类型:抓图工具
限制类型:45天试用


现场听众:

1.首先装入Trw2000

2.运行SuperCapture 3.0x(??刚才不是说3.04吗?怎么现在又变成了3.0x?哦这个问题·····,3.02和3.04注册码能共用所以
  我才这样说的。)

3.程序一开始就出现了“注册”和“试用”的选项,选择“注册”再点击输入注册码;注册的形式为 XXXX-XXXX-XXXX-XXXX(算一算是

  19个字母16进制等于13h),这是因为跟踪过才知道的,等会再交待如何得知。

4.来到输入注册码的窗口,Ctrl-N激活Trw2000,然后输入Bpx GetDlgItemTextA 设置断点。

  按F5返回SuperCapture3.0x的注册窗口

  第一行是SuperCapture3.0x给出的用户码            用户码为: ATKZ-KJMH-MHCH-QPCB

  第二行是用户输入的注册码                        随意输入: AAAA-BBBB-CCCC-DDDD

  然后用你的Mouse点击“确认”

5.Bingo!断点有效!开工啦(虽然是在新年开工,但是没有利钱的,休想········)

指针中断在 User32!GetDlgItemTextA
0167:BFF51743  B1A1          MOV CL,A1                                ;此时EIP指针在这里
XXXX:XXXX1745  55            PUSH EBP
    ·
    ·<F10>单步运行,按N次
    ·
XXXX:XXXX1764  E8E76B0000    CALL KERNEL32!SUnMapLs_IP_EBP
XXXX:XXXX1769  C9            LEAVE
XXXX:XXXX176A  C21000        RET 10                                  ;返回调用子程序的上一级程序中
    ·
    ·<F10>单步运行,按N次
    ·
016F:00492AB3  FF154C264B00  CALL USER32!GetItemTextA                ;返回来就指针在这里,也就是说:是这段代码调用
                                                                        用子程序向用户要求输入注册码的
XXXX:XXXX2AB9  ????????????  JMP SHOTR 00492ACB                      ;返回后程序无条件跳至 cs:00492ACB
    ·                                                                ;?????????是我忘记抄下的机器码,在下实在是粗心
    ·<F10>单步运行,按N次
    ·
    ·
XXXX:XXXX2ACB  5D            POP EBP
XXXX:XXXX2ACC  20 0C 00      RET                                      ;再一次返回上一级的程序 0167:0041FA45 那里。
    ·
    ·<F10>单步运行,按N次
    ·
0167:0041FA45  E853300700    CALL 00492A90                            ;从上面子程序返回在这里。
XXXX:XXXXFA4A  85C0          TEST EAX,EAX                            ;这时大家看看寄存器EAX=? 13吧?这就是我说为什么
XXXX:XXXXFA4C  0F8486000000  JZ  NEAR  0041FAD8                      ;要输入13(十六进制)=19(十进制)个字母的原因。
    ·                                                                ;这时我已输入了AAAA-BBBB-CCCC-DDDD加上减号共是
    ·                                                                ;19个字节即是13(十六进制),所以程序没有跳转。
    ·<F10>单步运行,按N次
    ·
XXXX:XXXXFA52  68CCEB4D00    PUSH DWORD 0041FAD8
XXXX:XXXXFA57  8D4C240C      LEA ECX,[ESP+0C]                        ;大家记得D命令吗?不妨看看ESP+0C存放着什么东东啊
    ·                                                                ;不看不知道,一看吓一跳!看见了!
    ·                                                                ;刚才我输入假注册码:AAAA-BBBB-CCCC-DDDD
    ·
    ·<F10>单步运行,按N次
    ·
    ·                                                               
XXXX:XXXXFA5E  8D9348020000  LEA EDX,[EBX+0248]                      ;那这个有必要要看吗?当然要啦,这个还有人问?
    ·                                                                ;看见什么了?看见用户码:ATKZ-KJMH-MHCH-QPCB
    ·
    ·
    ·<F10>单步运行,按N次
    ·
    ·
0167:0041FA67  E8F4ECFFFF    CALL 0041E760                            ;这是多番跟踪得出的——这是核心!即算出正确注册
    ·                                                                ;的主程序,有性趣的朋友不妨追踪到里面研究研究啊
    ·                                                                ;在这我就不得出来了,让有性趣的朋友算算(其实是
    ·                                                                ;我不会算,反正知道是算注册码的主程序)。
    ·                                                                ;现场听众起哄了····开始有人扔臭鸡蛋了···
    ·

别再打我了,说就说吧。

在0167:0041FA67  E8F4ECFFFF    CALL 0041E760                          ;这里同上面的一样按<F10>带过。
    ·                                                                ;然后把你的机器代码段窗口拉宽几行,上下看看。
    ·                                                                ;大家看见什么了?(听众,怒视望我)
    ·                                                                ;好了,上面存着如下字节串
    ·                                                                ;字节串一:ATKZKJMHMHCHQPCB
    ·                                                                ;字节串二:AAAABBBBCCCCDDDD
    ·                                                                ;字节串三:NLEKSCUEOHTPRXHL
    ·                                                                ;字节串四:AAAA-BBBB-CCCC-DDDD
    ·                                                                ;
    ·                                                                ;以上的字节串是用<F8>跟踪,
    ·                                                                ;进入 “CALL 0041E760 ”再用D命令查看ESP寄存器所得

听众们,猜注册码是什么?

听众甲曰:是ATKZKJMHMHCHQPCB
听众乙曰:是AAAABBBBCCCCDDDD
听众丙曰:是NLEKSCUEOHTPRXHL
听众丁曰:是AAAA-BBBB-CCCC-DDDD

全错!来人给我打!



整理:

破解历时30分钟
设过两个断点:
其一 Bpx GetWindowTextA
其二 Bpx GetDlgItemTextA


随便输入:AAAA-BBBB-CCCC-DDDD = AAAABBBBCCCCDDDD
取用户码:ATKZKJMHMHCHQPCB    = ATKZ-KJMH-MHCH-QPCB

正确密码:NLEKSCUEOHTPRXHL    = NLEK-SCUE-OHTP-RXHL