下面的是易经八卦占卜程序的注册码生成过程,请告诉我详细的解释好吗?
可能的话写个注册机。
下载地址:http://www.csdn.net/soft/openfile.asp?kind=1&id=13032
0167:00401BCD MOV ECX,[EBP-38]
0167:00401BD0 MOV EAX,[EBP-40]
0167:00401BD3 MOV DL,[ECX+EAX]
0167:00401BD6 MOV [EBP-45],DL
0167:00401BD9 MOVSX ECX,BYTE [EBP-45]
0167:00401BDD MOVSX EAX,BYTE [EBP-45]
0167:00401BE1 IMUL ECX,EAX
0167:00401BE4 MOVSX EDX,BYTE [EBP-45]
0167:00401BE8 IMUL ECX,EDX
0167:00401BEB MOV EAX,[EBP-40]
0167:00401BEE INC EAX
0167:00401BEF MOV EDX,[EBP-40]
0167:00401BF2 INC EDX
0167:00401BF3 IMUL EDX
0167:00401BF5 SUB ECX,EAX
0167:00401BF7 MOV EAX,[EBP-40]
0167:00401BFA INC EAX
0167:00401BFB MOVSX EDX,BYTE [EBP-45]
0167:00401BFF IMUL EDX
0167:00401C01 SUB ECX,EAX
0167:00401C03 PUSH ECX
0167:00401C04 CALL 00401CCC
0167:00401C09 POP ECX
0167:00401C0A MOV ECX,4B
0167:00401C0F CDQ
0167:00401C10 IDIV ECX
0167:00401C12 ADD DL,30
0167:00401C15 MOV [EBP-46],DL
0167:00401C18 MOV EAX,[EBP-38]
0167:00401C1B MOV EDX,[EBP-40]
0167:00401C1E MOV CL,[EBP-46]
0167:00401C21 MOV [EAX+EDX],CL
0167:00401C24 INC DWORD [EBP-40]
0167:00401C27 MOV EAX,[EBP-40]
0167:00401C2A MOV EDX,[EBP-44]
0167:00401C2D CMP EAX,EDX
标 题:这里: (464字)
发信人:冷雨飘心[BCG]
时 间:2001-9-1 13:18:50
详细信息:
0167:00401C0A MOV ECX,4B
0167:00401C0F CDQ ;al=eax=result
;calculated before
0167:00401C10 IDIV ECX ;divide by 4Bh,and get the
;remainder in dl then add it with
0167:00401C12 ADD DL,30 ;30h to convert it to ASCII
Strongly recommend you study the basic knowledge carefully,
Cracking is in fact a challenge to one,think and study more,then you will get more
标 题:这是我写的6.3的注册机,就你提供的用户名和密码看来算法没有变化,这个是用汇编写的,可能好理解一点
(3千字)
发信人:冷雨飘心[BCG]
时 间:2001-9-1 12:38:40
详细信息:
自己编译一下罢,如果要编译后的版本,可qq发给你(在线时),BCG内部也有
这个算法很简单,只不过演示了如何用汇编来写注册机,大部分是模板,cal是算法部分,写其它注册机时可少加改动即可重用大部分代码,界面设计是简单的对话框,虽然简单,优点是速度快(体现不出来),体积小3.0k(未压缩
),当然我不提倡用汇编写注册机,这只不过是我的业余爱好而已.
;===================make.bat compiled with MASM32
cls
c:\masm32\bin\ml /c /coff /Cp cr_yj.asm
rc /v cr_yj.rc
c:\masm32\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib cr_yj.obj cr_yj.res
;===================cr_yj.rc
#include <c:\masm32\include\resource.h>
#define DLG_MAIN 1000
#define IDC_UN 1001
#define IDC_REG 1002
#define ID_GEN 1003
#define ID_EXIT 1004
DLG_MAIN DIALOG 54, 53, 244, 52
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "易经八卦彩票占卜程序.V6.3/7.0 Keygen by Hume/BCG"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "GENERATE", ID_GEN, 181, 6, 50, 14
PUSHBUTTON "EXIT", ID_EXIT, 181, 24, 50, 14
CONTROL "Hume", IDC_UN, "EDIT", WS_BORDER | WS_TABSTOP, 62, 10, 98, 12
EDITTEXT IDC_REG, 62, 29, 109, 13, ES_READONLY | WS_BORDER | WS_TABSTOP
LTEXT "USERNAME:", -1, 18, 12, 40, 10
LTEXT "REG CODE:", -1, 18, 30, 41, 9
}
;===================cr_yj.asm
.386
.model flat,stdcall
option casemap:none
include hd.h
_ProcDlg proto :DWORD,:DWORD,:DWORD,:DWORD
;->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>data seg
.data
User db 80 dup(0)
Serial db 80 dup(0)
Count dd 0
adsn dd 0
MsgMesaage1 db "Must input Username in order to generate Reg Code! ",0
MsgCap db "By (C)hume,July,2001",0
.data?
hInstance HANDLE ?
.const
DLG_MAIN equ 1000
IDC_UN equ 1001
IDC_REG equ 1002
ID_GEN equ 1003
ID_EXIT equ 1004
;-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>code seg
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlg,0
invoke ExitProcess,NULL
_ProcDlg proc uses ebx edi esi, \
hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,\
SWP_NOMOVE or SWP_NOSIZE or SWP_DRAWFRAME
.elseif eax == WM_COMMAND
mov eax,wParam
.IF lParam!=0
.if ax==ID_GEN
invoke RtlZeroMemory,addr User,80
invoke RtlZeroMemory,addr Serial,80
invoke GetDlgItemText,hWnd,IDC_UN,addr User,80
.if eax!=NULL
mov Count,eax
call Cal
invoke SetDlgItemText,hWnd,IDC_REG,addr Serial
.else
invoke MessageBox,NULL,addr MsgMesaage1,addr MsgCap,MB_OK or MB_ICONEXCLAMATION
.endif
.elseif ax==ID_EXIT
invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL
.endif
.ENDIF
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlg ENDP
Cal PROC uses eax ebx
xor edx,edx
mov ecx,0
lea ebx,Serial
mov adsn,ebx
lopcal: LEA EDI,[ECX+01]
lea eax,User
add eax,ecx
MOV BL,[EAX]
MOVSX ESI,BL
MOV EAX,ESI
MOV EBX,4Bh
IMUL ESI
IMUL ESI
LEA EDX,[ECX+01]
IMUL EDX,EDI
SUB EAX,EDX
LEA EDX,[ECX+01]
IMUL EDX,ESI
SUB EAX,EDX
INC ECX
CDQ
XOR EAX,EDX
SUB EAX,EDX
CDQ
IDIV EBX
MOV EAX,EDX
ADD AL,30h
mov ebx,adsn
add ebx,ecx
dec ebx
MOV [ebx],AL
inc ebx
inc eax
CMP ECX,Count
JL lopcal ;//比较循环是否结束循环,计算
ToEit: ret
Cal endp
;-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end all
end start
标 题:这是6.3的tc Keygen供参考 (510字)
发信人:冷雨飘心[BCG]
时 间:2001-9-1 12:48:54
详细信息:
#include <stdio.h>
#include <string.h>
main()
{
char name[80];
register int i;
long int tmp;
printf("****************************************\n");
printf("*YiJIng Lottery Program Key_Gen by hume*\n");
printf("****************************************\n");
printf("Please input your register name:");
gets(name);
printf("\nYour register Code Is:");
for (i=0;i<strlen(name);i++ )
{tmp=name[i];
tmp=((tmp*tmp*tmp-(i+1)*(i+1)-(i+1)*tmp)%0x4b+0x30);
printf("%c",(char)tmp);
}
}