这是我第一次写pj文章,希望大家能给点鼓励:)
QuickCD
V1.0.4
软件大小: 59
KB
软件语言: 简体中文
软件类别: 国产软件 / 共享版 / 光驱工具
应用平台: Win9x/NT/2000/XP
界面预览:
无
加入时间: 2003-04-18
联 系 人: QuickMore@Hotmail.com
开 发 商: http://www.websamba.com/morequick
软件介绍:
QuickCD 可以帮助你方便快捷的打开关闭光驱门,你可以选择热键或者鼠标点击两种方式:1.热键(F9:打开光驱门,F10:关闭光驱门,F11:弹出设置对话框),当然你可以设置新的热键.2.鼠标点击(点击托盘图标:打开光驱门,右击托盘图标:关闭光驱门,右双击托盘图标:弹出菜单)
下载地址:http://www.skycn.com/soft/6381.html
工具:softice4.05
进入软件注册画面:
输入注册码:12345678
调出softice,下断点bpx
getwindowtexta,回到软件,点击注册后中断,F12返回程序领空,
到这里
001B:0040A9C6 8B4C2408
MOV ECX,[ESP+08]
001B:0040A9CA
6AFF PUSH
FF
001B:0040A9CC E8FA380000
CALL 0040E2CB
001B:0040A9D1 EB0C
JMP 0040A9DF
001B:0040A9D3
8B01 MOV
EAX,[ECX]
001B:0040A9D5 FF742408
PUSH DWORD PTR [ESP+08]
001B:0040A9D9 FF9088000000
CALL [EAX+00000088]
001B:0040A9DF
5E POP
ESI
一直按F10,此时Eax值没有变化,所以一直走下去 001B:0040234C 001B:00402352 001B:00402358 001B:00402359 001B:00402360 001B:00402365
到这里
001B:00402342
8B442414 mov eax, dword ptr [esp+14]//这里eax变化,用d
eax,看到什么?我的机器吗!!!
001B:00402346 50
push eax//机器码入栈,为下面的call做准备
001B:00402347 E84B180000
CALL 00403B97//这个call的作用是将机器吗的十进制值转化为十六进制值,怎么知道呢?call完之后用?eax就知道了
001B:00402350 8BF8
MOV EDI,EAX//eax赋值给edi,也就是edi中放着机器吗
001B:00402353 E83F180000
CALL 00403B97//同上面的call一样把假注册码转为十六进制值
001B:0040235B E860FFFFFF
CALL 004022C0//这个call不知道是干嘛的,搁着.....
001B:00402363 3BC5
CMP EAX,EBP//关键比较
呵呵,现在应该知道0040235B处的call是干什么的吧,他就是关键call,计算注册码后,改变了eax的值,现在我们F8进入到关键call
004022C0
001B:004022C0
8B442404 MOV
EAX,[ESP+04]//机器吗放入eax
001B:004022C4 35AC0BBB02
XOR EAX,02BB0BAC//eax与0X02BB0BAC异或结果放入eax
001B:004022C9
05FD593202 ADD EAX,023259FD//eax+0X023259FD
001B:004022CE
7905 JNS
004022D5//SF=0则跳走
001B:004022D0 99
CDQ
001B:004022D1 33C2
XOR EAX,EDX
001B:004022D3
2BC2 SUB
EAX,EDX
001B:004022D5 C3
RET
注册码的计算过程就这么一点,简单吧:)
注册成功后注册码写入同目录下的QuickCD.ini文件中
c++源码:
#include<iostream.h>
void
main()
{
int mac_code,reg_code;
cout<<"\n*************KenGen
BY NetFox*************"<<endl
<<"\n";
cout<<"Machine Code Please:";
cin>>mac_code;
mac_code^=0x02bb0bac;
reg_code=mac_code+0x023259fd;
cout<<"Your
Register Code Is:"<<reg_code<<endl<<"\n";
}