Flash Cam 1.79注册算法分析与注册机制作以及爆破方法
工具:ollydbg 1.06
运行Flash Cam, 进入注册画面,然后运行ollydbg,单击[file]选单中的[Attach],找到FlashCam进程,
确认后,进入ollydbg主画面,按Alt+E出现[Executable Modules],选中user32.dll,再按Ctrl+N,
出现[Names in user32],找到showwindow后,按F2下断点,按Alt+C回到[CPU-main thread],按F9运行。
在FlashCam注册画面中输入RegCode,确认后,程序在所设断点处被拦截,清除断点后,反复按Ctrl+F9,
回到程序领空。然后一步一步按F8,注意观察屏幕左上角和右下角,如果出现了你输入的RegCode或者
其他可疑的字符串,则放慢脚步,在当前执行行的前面几行设断点,保证重新注册时程序能在出错窗口
显示前被拦截。好了,再次注册更踪,这样,程序在出错窗口显示前便被拦截,然后按F7单步更踪,
不要放过任何可疑的Call(呵呵,这是对菜鸟而言啦,我可是直接就到了这里哦),最后就来到了这里:
00516B5B 50 PUSH EAX
00516B5C B9 20000000 MOV ECX,20
00516B61 BA F19D0000 MOV EDX,9DF1
00516B66 B8 1A000000 MOV EAX,1A
00516B6B E8 70FCFFFF CALL FlashCam.005167E0 //注册码计算过程
00516B70 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] //真正的注册码
00516B73 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] //你输入的假的注册码
00516B76 E8 B5D6EEFF CALL FlashCam.00404230 //比较过程
00516B7B 75 04 JNZ SHORT FlashCam.00516B81 //不相等则over
////////////////////////////////////////////////////////////////////////////////////////
////////--------00516B6B CALL FlashCam.005167E0-------///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
005167E0 55 PUSH EBP
005167E1 8BEC MOV EBP,ESP
005167E3 83C4 E8 ADD ESP,-18
005167E6 53 PUSH EBX
005167E7 56 PUSH ESI
005167E8 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
005167EB 8BF2 MOV ESI,EDX
005167ED 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
005167F0 FF75 10 PUSH DWORD PTR SS:[EBP+10]
005167F3 FF75 0C PUSH DWORD PTR SS:[EBP+C]
005167F6 8D4D F2 LEA ECX,DWORD PTR SS:[EBP-E]
005167F9 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
005167FC 8D45 F6 LEA EAX,DWORD PTR SS:[EBP-A]
005167FF E8 AC4BEFFF CALL FlashCam.0040B3B0
00516804 0FB755 F4 MOVZX EDX,WORD PTR SS:[EBP-C] //变量Month
00516808 8BDA MOV EBX,EDX
0051680A 0FB745 F6 MOVZX EAX,WORD PTR SS:[EBP-A] //变量Year
0051680E 03D8 ADD EBX,EAX //ebx=Month+Year
00516810 69C8 A6030000 IMUL ECX,EAX,3A6 //ecx=Year*0x3a6
00516816 03D9 ADD EBX,ECX //ebx=ebx+ecx
00516818 69CA 4C010000 IMUL ECX,EDX,14C //ecx=Month*0x14c
0051681E 03D9 ADD EBX,ECX //ebx=ebx+ecx
00516820 0FAFD0 IMUL EDX,EAX //edx=Month*Year
00516823 03DA ADD EBX,EDX //ebx=ebx+edx
00516825 0FB745 F4 MOVZX EAX,WORD PTR SS:[EBP-C] //Month
00516829 0FB755 F6 MOVZX EDX,WORD PTR SS:[EBP-A] //Year
0051682D F7EA IMUL EDX //eax=Month*Year
0051682F 3345 FC XOR EAX,DWORD PTR SS:[EBP-4] //eax=eax ^ 0x01a
00516832 03D8 ADD EBX,EAX //ebx=ebx+eax
00516834 E8 BF19FFFF CALL FlashCam.005081F8 //分析见下
00516839 B9 E7030000 MOV ECX,3E7 //ecx=0x3e7
0051683E 99 CDQ
0051683F F7F9 IDIV ECX
00516841 8BC2 MOV EAX,EDX //eax=eax % ecx
00516843 03D8 ADD EBX,EAX //ebx=ebx+eax
00516845 0FB745 F4 MOVZX EAX,WORD PTR SS:[EBP-C] //eax=Month
00516849 85C0 TEST EAX,EAX
0051684B 76 06 JBE SHORT FlashCam.00516853 //循环
0051684D 0FAFDE IMUL EBX,ESI //ebx=ebx*0x9df1
00516850 48 DEC EAX //循环Month次
00516851 75 FA JNZ SHORT FlashCam.0051684D
00516853 0FB745 F6 MOVZX EAX,WORD PTR SS:[EBP-A] //eax=Year
00516857 85C0 TEST EAX,EAX
00516859 76 06 JBE SHORT FlashCam.00516861 //循环
0051685B 035D F8 ADD EBX,DWORD PTR SS:[EBP-8] //ebx=ebx+0x20
0051685E 48 DEC EAX //循环Year次
0051685F 75 FA JNZ SHORT FlashCam.0051685B
00516861 8BC3 MOV EAX,EBX //eax=ebx
00516863 99 CDQ
00516864 33C2 XOR EAX,EDX //eax=eax ^ 0xffffffff
00516866 2BC2 SUB EAX,EDX //eax=eax-0xffffffff
00516868 8BD8 MOV EBX,EAX
0051686A 8BC3 MOV EAX,EBX
0051686C B9 FFC99A3B MOV ECX,3B9AC9FF //ecx=0x3b9ac9ff
00516871 33D2 XOR EDX,EDX
00516873 F7F1 DIV ECX //edx=eax % ecx
00516875 8BDA MOV EBX,EDX //edx->ebx
00516877 895D E8 MOV DWORD PTR SS:[EBP-18],EBX
0051687A 33C0 XOR EAX,EAX
0051687C 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0051687F DF6D E8 FILD QWORD PTR SS:[EBP-18] //ebx转换为十进制,呵呵,这就是
//我们苦苦追寻的东西了。当然
//还不完美,因为现在得到的仅仅是
//去掉“-”连接符号后的RegCode。
//后面的工作就不需要我讲了吧,
//哎,为了菜鸟,我就再多说一句吧,
//分别在此串的第4位和第7位添上
//"-",就是RegCode了。哈哈,简单吧。
////////////////////////////////////////////////////////////////////////////////////////
////////--------00516834 CALL FlashCam.005081F8-------///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
005081F8 55 PUSH EBP
、、、
00508251 6A 00 PUSH 0
00508253 6A 00 PUSH 0
00508255 6A 00 PUSH 0
00508257 E8 CCF8EFFF CALL FlashCam.00407B28 ; JMP to kernel32.GetVolumeInformationA
0050825C 8B03 MOV EAX,DWORD PTR DS:[EBX] //卷序号->eax
0050825E 99 CDQ
0050825F 33C2 XOR EAX,EDX //eax ^ 0xffffffff ->eax
00508261 2BC2 SUB EAX,EDX //eax - 0xffffffff ->eax
、、、
0050828B C3 RETN
//////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
破解方法
1、爆破
修改00516b7b处7504为9090(注意:由于此软件已加壳,所以必须脱壳后才能修改代码)
2、注册机
前面的分析,基本上就是标准的c程序了。呵呵,为了便于阅读,我还是再整理一遍吧。(c builder 6通过)
DWORD nBL;
LPTSTR lpB;
LPCTSTR lpRPN;
LPTSTR lpVNB;
DWORD nVNS;
LPDWORD lpVSN;
LPDWORD lpMCL;
LPDWORD lpFSF;
LPTSTR lpFSNB;
DWORD nFSNS;
int i;
AnsiString RegCode;
Word Year, Month, Day;
unsigned long eax,ebx,ecx,edx,esi,lpVSN;
char szHome[MAX_PATH];
BitBtn1->Enabled=False;
TDateTime dtPresent = Now();
DecodeDate(dtPresent, Year, Month, Day);
ebx=Year+Month;
ecx=Year * 0x3a6;
ebx=ebx+ecx;
ecx=Month * 0x14c;
ebx=ebx+ecx;
edx=Year * Month;
ebx=ebx+edx;
eax= edx ^ 0x1a;
ebx=eax+ebx;
GetCurrentDirectory(MAX_PATH,szHome);
szHome[3]='\0';
GetVolumeInformationA(szHome,0,0,&lpVSN,0,0,0,0);
eax=lpVSN;
eax=eax ^ 0xffffffff;
eax=eax - 0xffffffff;
eax=eax % 0x3e7;
ebx=ebx+eax;
esi=0x9df1;
for(i=1;i<=Month;i++){
ebx=ebx*esi;
}
for(i=1;i<=Year;i++){
ebx=ebx+0x20;
}
ebx=ebx ^ 0xffffffff;
ebx=ebx - 0xffffffff;
ecx=0x3b9ac9ff;
ebx=ebx % ecx;
RegCode=IntToStr(ebx);
RegCode.Insert("-",4);
RegCode.Insert("-",8);
youth[chat001]
2002-4-24晚
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>