一般软件的注册方法是在注册对话框中输入一些信息后按“注册”按钮,然后它会进行验证,根据对、错给出相应的提示,或者告诉你需重新启动然后验证,但“人体生物节律查询7.09”却有些不同,以至有网友费了很大的力气跟踪它的注册过程,但一直没有发现关键点。现破解如下:
我的机器号为“26402905”,在注册对话框中输入注册码“78787878”,切换到trw2000,用s 0,ffffffff
'78787878'找到一个地址xxxxxxxx,然后下bpm xxxxxxxx,回到注册画面,按下“OK”,马上被拦截,再接下来就是艰苦的跟踪过程,过程比较复杂,似乎在进行一些计算,还没看到什么值得怀疑的内容就回到了“人体”,什么提示都没有。也不知道是否注册成功,怎么办?再追一次,还是一样。看一下它的帮助信息,它提示说没有注册就不能打印,试一下,果然一按“打印”,马上提示“未注册,不能打印”,既然这样就有办法了。下bpx
messageboxexa,按“打印”,马上被拦截,然后慢慢走,看这个消息框是哪儿调用的。走啊走……直到地址47A3BA(如下),一看很值得怀疑,既然怀疑就要验证,怎么办?先bc去掉以前的中断,再下bp
47a33c,回到“人体”再按“打印”,马上拦截,然后一步一步走。到47a380,ecx与edi不相同,跳到下面提示未注册,如让47a382那个不跳,让47a3a5那个跳的话,就出现打印对话框。看样子关键果然在这,换一个注册码"34345656"注册一下后再试,发现在47a380处的ecx是“0c5d”保持不变,edi在改变,而且,每换一个注册码,edi都会改变,是否可以猜想,ecx由机器号决定,edi由注册码决定?再看edi是由内存中两个数决定的,那两个数是“0D6A”和“1618”,换成十进制不是“3434”和“5656”吗?有一些眉目了!再看下面47a3a3的比较,其中的edi也是由这两个数决定的,而且它应与eax相同,仔细看一下,列一个二元一次方程组解出这两个四位数,如不足四位如xxx则添零变成0xxx,然后连成一个8位数就是注册码。如果您对机器码的计算过程也感兴趣的话,也可试一下,只是一些求商、求余的算法,很简单。
0167:0047A33C PUSH EBX
0167:0047A33D PUSH ESI
0167:0047A33E PUSH EDI
0167:0047A33F PUSH ECX
0167:0047A340 MOV [ESP],EDX
0167:0047A343 MOV EBX,EAX
0167:0047A345 MOV EAX,[004808AC]
0167:0047A34A SUB EAX,BYTE +47
0167:0047A34D MOV ECX,EAX
0167:0047A34F SHL ECX,02
0167:0047A352 LEA ECX,[ECX+ECX*2]
0167:0047A355 MOV EDX,[004808C0]
0167:0047A35B SUB EDX,BYTE +2F
0167:0047A35E MOV EDI,EDX
0167:0047A360 ADD EDI,EDI
0167:0047A362 SUB ECX,EDI
0167:0047A364 MOV ESI,[004808B8]
0167:0047A36A SUB ESI,BYTE +2B
0167:0047A36D IMUL EDI,ESI,BYTE +0B
0167:0047A370 ADD ECX,EDI
0167:0047A372 MOV EDI,[004808B0] \
0167:0047A378 ADD EDI,EDI
<-算edi
0167:0047A37A SUB EDI,[004808C4] /
0167:0047A380 CMP ECX,EDI
0167:0047A382 JNZ 0047A3A7
0167:0047A384 MOV ECX,[004808C4] \
0167:0047A38A ADD ECX,ECX
<-算edi
0167:0047A38C MOV EDI,[004808B0] /
0167:0047A392 SUB EDI,ECX
0167:0047A394 LEA EAX,[EAX+EAX*2]
0167:0047A397 ADD EDX,EDX
0167:0047A399 LEA EDX,[EDX+EDX*4]
0167:0047A39C SUB EAX,EDX
0167:0047A39E LEA EDX,[ESI+ESI*4]
0167:0047A3A1 SUB EAX,EDX
0167:0047A3A3 CMP EDI,EAX
0167:0047A3A5 JZ 0047A3C1
0167:0047A3A7 PUSH BYTE +10
0167:0047A3A9 MOV ECX,0047A430
0167:0047A3AE MOV EDX,0047A43C
0167:0047A3B3 MOV EAX,[0047F828]
0167:0047A3B8 MOV EAX,[EAX]
0167:0047A3BA CALL 0044CB30 <-运行则提示“未注册”
0167:0047A3BF JMP SHORT 0047A428
0167:0047A3C1 MOV EAX,[EBX+0318]
0167:0047A3C7 MOV EDX,[EAX]
0167:0047A3C9 CALL NEAR [EDX+3C]
0167:0047A3CC TEST AL,AL
0167:0047A3CE JZ 0047A428
0167:0047A3D0 CMP BYTE [EBX+2763],00
0167:0047A3D7 JZ 0047A3E6
0167:0047A3D9 XOR EDX,EDX
0167:0047A3DB MOV EAX,[EBX+0410]
0167:0047A3E1 CALL 0042E7F0
0167:0047A3E6 MOV BYTE [EBX+2762],01
0167:0047A3ED CALL 0041F0DC
0167:0047A3F2 CALL 0041E7AC
0167:0047A3F7 MOV EDX,[ESP]
0167:0047A3FA MOV EAX,EBX
0167:0047A3FC CALL 00476A20
0167:0047A401 CALL 0041F0DC
0167:0047A406 CALL 0041E834
0167:0047A40B MOV BYTE [EBX+2762],00
0167:0047A412 CMP BYTE [EBX+2763],00
0167:0047A419 JZ 0047A428
0167:0047A41B MOV DL,01
0167:0047A41D MOV EAX,[EBX+0410]
0167:0047A423 CALL 0042E7F0
0167:0047A428 POP EDX
0167:0047A429 POP EDI
0167:0047A42A POP ESI
0167:0047A42B POP EBX
0167:0047A42C RET
破后感:对于这个软件,如果一味跟踪注册码输入过程的话,可能永远找不到关键所在,因为没有明显的对、错标志,或许根本不在那儿判断,但是只要找到一个标志,如我用的打印,从这个标志入手破解可能会变得很简单。还有就是破解一个软件时,如果费了很多精力仍然破不了,那可以想一想,是否可以换个角度、换个地方入手,找个最薄弱的环节,绕过它的马其诺防线,可能就会有“山重水复疑无路,柳暗花明又一村”的感觉。
- 标 题:人体生物节律查询7.09的破解。换个角度入手,可能会简单得多。 (4千字)
- 作 者:hying[CCG]
- 时 间:2000-8-13 9:44:51
- 链 接:http://bbs.pediy.com