享受自己动手的乐趣,另类破解 Flash Player Pro 3.65
----------------------------------程序简介----------------------------------
Flash播放与管理工具。可以用来:浏览flash动画、捕Flash播放与管理工具。可以用来:浏览flash动画、捕捉flash图像并发送为墙纸、方便地制作flash屏保、在SWF文件和可执行flash文件之间相互转换,以及更多功能。所有这些功能可以用来增强或扩展现有flash文件的用途,在加上友好的界面为你提供了一个难以忘怀的flash动画世界。
----------------------------------注册分析----------------------------------
根据高手黄仁来在其博客上的分析,该软件只是对注册码进行MD5加密,然后和60c3c872bf6b924c4b8d841e7b9f8407比较,如果相等则注册成功。
详见http://hi.baidu.com/beyond0769/blog/item/db64af241511fe36c99559f7.html
----------------------------------爆破方法----------------------------------
在上文中,大侠使用了一些更复杂(相对于我等菜鸟)的方法,实际上可以简单一些,用16进制编辑软件打开主程序 Flash Player Pro.exe,然后用一个已知 MD5 值的字符串,比如 1234567890 的 md5 值E807F1FCF82D132F9BB018CA6738A19F 替换程序中所有的 60c3c872bf6b924c4b8d841e7b9f8407 即可用 1234567890 注册成功,用户名随便填写。
----------------------------------程序下载----------------------------------
原程序下载地址
http://jlbc.skycn.com/down/FlashPlayerPro.zip
/:001 思路很强悍 。。。学习 呵呵不错..等于是2个值都是自己添加的了。 哈哈,这个思路好!学习了,谢谢! 对 我们弄这样不可逆算法的爆破上 大多都采用这种数值替换的方法 不错 ~~
转一下作者的Patch源码
procedure WriteRegInfo;const FPath= '\software\flash player pro';
Var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
If Reg.OpenKey(FPath, False) then
begin
Reg.WriteString('Username','黄仁来');
Reg.WriteString('code','http://hi.baidu.com/beyond0769');
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;
然后打补丁过程(简化代码):
var
FileName: PChar = 'Flash Player Pro.exe'; //破解目标文件完整名称
IntFileSize: Cardinal = 6866944; //破解目标文件的大小字节
RBuffer: array of Byte = ($75, $48); //目标破解文件原有的偏移量
WBuffer: array of Byte = ($74, $48); //修改后的偏移量
OffsetPos: TOVERLAPPED = (Internal: 0; InternalHigh: 0; Offset: $001122DF; OffsetHigh: 0; hEvent: 0);
procedure PatchFile;
var
Res:boolean;
begin
Setfileattributes(FileName, FILE_ATTRIBUTE_NORMAL + FILE_ATTRIBUTE_ARCHIVE); //设置文件的属性为正常
hFile := CreateFile(FileName, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or
FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
try
if hFile <> INVALID_HANDLE_VALUE then
begin
if Word(Buffer) = Word(RBuffer) then {// 读取偏移是否正确;}
begin
CopyFile(FileName, PChar('备份' + FileName), False); //备份破解目标文件;
if WriteFile(hFile, WBuffer, 2, Numb, @OffsetPos) then
begin
MessageBox(0, PChar('成功打上补丁!'), PChar('海浪轻风温馨提示:'), nType);
Res:=True;
end;
end;
end;
finally
CloseHandle(hFile);
if Res then ShellExecute(0, nil, szLink, nil, nil, 0);
end;
end; 虽然不懂 也来学习和感受下 强盗式的破解方式!不错! 厉害得方法!!!! 这样子直接就行了,不错
很好呢,记住了
页:
[1]
2