• 标 题:守财奴1.9注册分析+注册机源码 
  • 作 者: lordor
  • 时 间:2003/04/14 11:18am 
  • 链 接:http://bbs.pediy.com

软件名称:守财奴
   
整理日期:2003.4.3
最新版本:1.9
文件大小:688KB
软件授权:
使用平台:Win9x/Me/NT/2000/XP
发布公司:Home Page
软件简介:
  每天,当你疲于挣钱时,是否清楚自己到底挣了多少,花了多少,花在哪里?如果你想消除这些疑问的话,那么请使用本程序,并每天抽出5分钟时间,击几下键盘,点几下鼠标,那么即便是日积月累,你也能随时掌握自己各方面的收入支出情况。本程序为免费软件,可任意拷贝使用,绝对没有任何功能与时间上的限制。但如果您觉得此软件对您有用,并且资金允许的话,请向作者联系注册。具体注册方法请在帮助菜单中的注册中查看。《安装完成后请先阅读帮助中的---使用手册》 ★支持Windows98/ME/NT/2000/XP  ★数据安全,用户按角色分配权限★收支项目分类  ★详细的收支记录★强大的历史收支记录查询 ★每个用户独立的理财日记 ★计算个人所得税 ★数据备份恢复功能  ★打印及导出数据为Excel文件功能。

工具:W32Dasm,ollyDBg1.09

软件要求先输入注册信息,再在重启时进行比较。

注册编号:lordor(各位假设为x1x2x3x4x5x6)
注册密码:654321(各位假设为y1y2y3y4y5y6)

一、用GetPrivateProfileStringA下断,来到如下

00433112   .  68 902E4900   PUSH wbook.00492E90                      ; /lParam = 492E90
00433117   .  55            PUSH EBP                                 ; |wParam
00433118   .  68 80010000   PUSH 180                                 ; |Message = LB_ADDSTRING
0043311D   .  51            PUSH ECX                                 ; |hWnd
0043311E   .  FF15 4C964700 CALL DWORD PTR DS:[<&USER32.SendMessageA>; \SendMessageA
00433124   .  8B3D 9C924700 MOV EDI,DWORD PTR DS:[<&KERNEL32.GetPriv>;  KERNEL32.GetPrivateProfileStringA
0043312A   .  68 4C114900   PUSH wbook.0049114C                      ; /IniFileName = ".\UserInfo.ini"
0043312F   .  8D5424 34     LEA EDX,DWORD PTR SS:[ESP+34]            ; |
00433133   .  6A 0B         PUSH 0B                                  ; |BufSize = B (11.)
00433135   .  52            PUSH EDX                                 ; |ReturnBuffer
00433136   .  68 842E4900   PUSH wbook.00492E84                      ; |Default = "0000000000"
0043313B   .  68 942B4900   PUSH wbook.00492B94                      ; |Key = "RegCode"
00433140   .  68 882B4900   PUSH wbook.00492B88                      ; |Section = "RegUserInfo"
00433145   .  C74424 54 080>MOV DWORD PTR SS:[ESP+54],8              ; |
0043314D   .  895C24 58     MOV DWORD PTR SS:[ESP+58],EBX            ; |
00433151   .  896C24 5C     MOV DWORD PTR SS:[ESP+5C],EBP            ; |
00433155   .  C74424 60 060>MOV DWORD PTR SS:[ESP+60],6              ; |
0043315D   .  895C24 64     MOV DWORD PTR SS:[ESP+64],EBX            ; |
00433161   .  C74424 68 030>MOV DWORD PTR SS:[ESP+68],3              ; |
00433169   .  FFD7          CALL EDI                                 ; \GetPrivateProfileStringA
0043316B   .  68 4C114900   PUSH wbook.0049114C                      ; /IniFileName = ".\UserInfo.ini"
00433170   .  8D4424 2C     LEA EAX,DWORD PTR SS:[ESP+2C]            ; |
00433174   .  6A 07         PUSH 7                                   ; |BufSize = 7
00433176   .  50            PUSH EAX                                 ; |ReturnBuffer
00433177   .  68 7C2E4900   PUSH wbook.00492E7C                      ; |Default = "000000"
0043317C   .  68 802B4900   PUSH wbook.00492B80                      ; |Key = "RegPass"
00433181   .  68 882B4900   PUSH wbook.00492B88                      ; |Section = "RegUserInfo"
00433186   .  FFD7          CALL EDI                                 ; \GetPrivateProfileStringA
00433188   .  33C0          XOR EAX,EAX
0043318A   .  8D4C24 6C     LEA ECX,DWORD PTR SS:[ESP+6C]
0043318E   >  0FBE5404 30   MOVSX EDX,BYTE PTR SS:[ESP+EAX+30]       ;  注册编号lordor依次入edx
00433193   .  83EA 30       SUB EDX,30                               ;  edx-30
00433196   .  40            INC EAX                                  ;  eax加1X
00433197   .  8911          MOV DWORD PTR DS:[ECX],EDX               ;  edx保存在stack中,为12fb80],EDX
00433199   .  83C1 04       ADD ECX,4                                ;  ecx加4X
0043319C   .  83F8 06       CMP EAX,6                                ;  eax是否为66
0043319F   .^ 7C ED         JL SHORT wbook.0043318E                  ;  如eax小于6则继续循环k.004331
004331A1   .  33C0          XOR EAX,EAX                              ;  eax清空X,
004331A3   .  8D4C24 54     LEA ECX,DWORD PTR SS:[ESP+54]            ;  作好保存准备,DWORD
004331A7   >  0FBE5404 28   MOVSX EDX,BYTE PTR SS:[ESP+EAX+28]       ;  注册密码依次入edx
004331AC   .  83EA 30       SUB EDX,30                               ;  edx减30,
004331AF   .  40            INC EAX                                  ;  eax加1X
004331B0   .  8911          MOV DWORD PTR DS:[ECX],EDX               ;  把edx值入stack,此为12fb68],EDX
004331B2   .  83C1 04       ADD ECX,4                                ;  ecx加4,其实指向下stack处
004331B5   .  83F8 06       CMP EAX,6                                ;  eax是否为66
004331B8   .^ 7C ED         JL SHORT wbook.004331A7
004331BA   .  899E 8C1E0000 MOV DWORD PTR DS:[ESI+1E8C],EBX
004331C0   .  33C9          XOR ECX,ECX
004331C2   >  8B440C 6C     MOV EAX,DWORD PTR SS:[ESP+ECX+6C]        ;  加工后的密码编号依次入eax,此为3c=6c-30ECX+6C]
004331C6   .  8B540C 3C     MOV EDX,DWORD PTR SS:[ESP+ECX+3C]        ;  8,1,0,6,1,3依次入edxSS:[ESP+
004331CA   .  03C2          ADD EAX,EDX                              ;  eax与edx相加运算
004331CC   .  83F8 0A       CMP EAX,0A                               ;  判断eax与0a是否相等
004331CF   .  72 03         JB SHORT wbook.004331D4                  ;  eax小于0a,则跳,否则减0a4331D4
004331D1   .  83E8 0A       SUB EAX,0A                               ;  如果eax不等0a,则eax减0a
004331D4   >  3B440C 54     CMP EAX,DWORD PTR SS:[ESP+ECX+54]        ;  eax再与转换为十进制的注册密码相比,此为6SP+ECX+54]
004331D8   .  74 06         JE SHORT wbook.004331E0                  ;  如相等则继续比较,否则设置注册不成功标志
004331DA   .  89AE 8C1E0000 MOV DWORD PTR DS:[ESI+1E8C],EBP
004331E0   >  83C1 04       ADD ECX,4                                ;  ecx加4
004331E3   .  83F9 18       CMP ECX,18                               ;  ecx是否等18,判断是否比较完,18H十进制为24,即6位        
004331E6   .^ 7C DA         JL SHORT wbook.004331C2
004331E8   .  39AE 8C1E0000 CMP DWORD PTR DS:[ESI+1E8C],EBP
004331EE   .  75 30         JNZ SHORT wbook.00433220
004331F0   .  68 702E4900   PUSH wbook.00492E70
004331F5   .  68 C3040000   PUSH 4C3
004331FA   .  8BCE          MOV ECX,ESI
004331FC   .  E8 D8320200   CALL wbook.004564D9


二、总结算法
据以上分析,相应等式如下:
第一位:(8+x1)mode10=y1
第二位:(1+x2)mode10=y2
第三位:(0+x3)mode10=y3
第四位:(6+x4)mode10=y4
第五位:(1+x5)mode10=y5
第六位:(3+x6)mode10=y6

总结如下:
注册编号:844718
注册密码:654321

注册信息保存在当前目录下UserInfo.inf文件中
[RegUserInfo]
RegCode=844718
RegPass=654321


三、注册机TC2.0:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>

main()
{
int i,j;

int name[20];
int sn[10];
int code[6]={8,1,0,6,1,3};

printf("**************************************************************\n");
printf("* 守财奴v1.9 Keygen *\n");
printf("* Made by lordor(lordor@163.com) *\n");
printf("* 2003-4-13 *\n");
printf("**************************************************************\n");

printf("please input your number,must be int number:\n");

for(i=0;i<6;i++)
{
printf("the %d number:\n",i+1);
scanf("%d",&name[i]);
}


printf("\nYour register code:");

for(j=0;j<6;j++)
{
sn[j]=code[j]+name[j];
if(sn[j]>10)
sn[j]=sn[j]-10;
}

for (j=0;j<6;j++)
{
printf("%d",sn[j]);
}
printf("\n\n\n");
printf("Enjoy it!\n\nBye!\n");
}