呵呵,听说HC上WWW罗!另外又听说NC的原始码公布出来了?
以下是昨晚的成果..........


<一> 摘要
software  : news monger 1.4.5
home page : http://www.techsmith.com
file name : nmonger.exe
reg_name  : yupie
reg_no    : 47291165199803

<二> 缘起
这是一个能帮你在news group搜寻资讯的应用程式,你可以设定一个主题让它去news
server上找出寻所有相关的post,尤其有些news group上的post多的吓死人,而又不是每篇
你都感兴趣,这时候就用的到它啦.当然在网路上也有许多主机也有相同的功能像是GAIS,
DJ News等.整个介面设计的相当好,让人看得很舒服,操作也很简单很容易就能学会基本功
能.你有四十五天的试用期,过期时只会出现恼人的提醒注册画面.

<叁> 执行情形
(1)
载入soft-ice後执行news monger,马上出现注册画面,选择register
monger/regstration form,在name处填入yupie其它地方不填按下ok,选择help/register
填入1234567890,Ctrl-d进入soft-ice後下bpx getdlgitemtexta指令,按F5回到注册画面,
按下OK,马上进入soft-ice.

(2)
bd *,按F11回到原先呼叫处,再按F12共2次後出现错误画面.

(3)
 重覆1-2,这次按F12共1次,再来用F10去追.

(4)

0137:0042EFE0  MOV     EBP,EAX                    ;比对输入reg_no长度若跳到
0137:0042EFE2  CMP     EBP,0E                     ;0042F101就注册失败,故重新
0137:0042EFE5  JB      0042F101                   ;将reg_no改成12345678901234
0137:0042EFEB  PUSH    0048D078
0137:0042EFF0  PUSH    EBX
0137:0042EFF1  CALL    00436530

....中间省略

0137:0042F033  CALL    00448B65
0137:0042F038  PUSH    EAX
0137:0042F039  MOV     ECX,ESI
0137:0042F03B  CALL    0040FA50
0137:0042F040  PUSH    FF
0137:0042F042  MOV     ECX,EBX
0137:0042F044  MOV     EBP,EAX
0137:0042F046  CALL    00448BB4                   ;这里就是关键点
0137:0042F04B  TEST    EBP,EBP                    ;如果跳到0042F101
0137:0042F04D  JZ      0042F101                   ;就会出现注册失败的画面

由於在执行过0137:0042F046後出现关键点,所以用F8切入里面瞧瞧,并未发现任何可疑处,
在看看上面EBP的值是在0137:0042F044处由EAX传来的,所以重新将中断点设在0137:0042
F03B,用F8切入.
再来就是耐心跟毅力,用F10慢慢分析了.

0137:0040FA50  SUB     ESP,4C
0137:0040FA53  XOR     EAX,EAX
......
0137:0040FAB3  CALL    0042F3F0
0137:0040FAB8  ADD     ESP,04
0137:0040FABB  TEST    EAX,EAX
0137:0040FABD  JNZ     0040FAD5                   ;跳跃到0040FAD5
......
0137:0040FAD5  LEA     EAX,[ESP+0C]
0137:0040FAD9  PUSH    02
......
0137:0040FAF9  CALL    0042F400
0137:0040FAFE  ADD     ESP,0C
0137:0040FB01  TEST    EAX,EAX
0137:0040FB03  JNZ     0040FB1D                   ;跳跃到0040FB1D
......
0137:0040FB1D  LEA     ECX,[ESP+10]
0137:0040FB21  LEA     EDX,[ESP+20]
0137:0040FB25  PUSH    ECX
0137:0040FB26  PUSH    EDX
0137:0040FB27  CALL    0042F4F0                   ;就是这里
0137:0040FB2C  ADD     ESP,08
0137:0040FB2F  NEG     EAX
0137:0040FB31  SBB     EAX,EAX
0137:0040FB33  POP     EDI
0137:0040FB34  NEG     EAX
0137:0040FB36  POP     ESI
0137:0040FB37  ADD     ESP,4C
0137:0040FB3A  RET     0008

F8切入0137:0040FB27,为何是这里?一步一步追出来的! (^^)

0137:0042F4F0  SUB     ESP,7C
0137:0042F4F3  XOR     EAX,EAX
......
0137:0042F5D8  MOV     DL,[ESI+ESP+24]
0137:0042F5DC  AND     EAX,000000FF
0137:0042F5E1  AND     EDX,0F
0137:0042F5E4  ADD     ESP,04
0137:0042F5E7  MOVSX   ECX,BYTE PTR [EDX+ESP+10]  ;这里就是比对关键点啦
0137:0042F5EC  CMP     ECX,EAX                    ;ECX里的就正是注册码
0137:0042F5EE  JNZ     0042F605                   ;
0137:0042F5F0  ADD     EDI,02                     ;
0137:0042F5F3  CMP     DI,10                      ;判断是否已经
0137:0042F5F7  JB      0042F5C3                   ;比对比对完毕
0137:0042F5F9  MOV     EAX,00000001
0137:0042F5FE  POP     EDI
0137:0042F5FF  POP     ESI
0137:0042F600  POP     EBX
0137:0042F601  ADD     ESP,7C
0137:0042F604  RET

(5)
由上面可以看出,在0137:0042F5EC处是个关键点,重新在此处设置中断点,并且在每次比对
完毕後(0137:0042F5EE)改变旗标使其不做跳跃,把ECX中数值的一个一个抄下就是我们在
找的注册码,你会发现实际上只有比对前8位数,後6位数似乎只是来产生注册码用的.所以
我把後6位数改成199803,当然你也可以换成任何你喜欢的数字像是382436(谁的叁围).
*_*

(6)
重新打开clipmate注册画面,填入yupie/47291165199803完成注册.

<四> 结论

当初拿到这个软体时是想破解一些有时间限制的软体,用getsystemtime,getlocaltime等
去拦结果搞不出名堂,最後乱试一通才发现它要先填好register form後才能输入注册码,
所以就花了些时间把他给解决了,另外追这个程式也要有耐心,虽然它不是VB写的程式,但
追起来绝对不会比VB写的程式轻松,另外最近想解一些有时间的软体,但一直不得其门而入,
有人要传授几招吗?