您的位置:首页 > 其它

1-Click PC Tuneup软件-破解实录-[附加篇]编写注册机

2013-11-23 09:14 351 查看
[作者]

网名: 猪头三

站点: http://www.x86asm.com

Email: pliceman_110@163.com

QQ: 643439947

编程生涯: 2001~至今[12年]

职业生涯: 10年

开发语言: C/C++; x86asm; Object Pascal; C#;

开发工具: VC++; Delphi;

研发领域: Windows应用软件安全; Windows系统内核安全; Windows系统磁盘数据安全;

技能种类: 逆向 驱动 磁盘 文件

[序言]

脱离玩破解已经好几年了, 由于前段时间在休息, 闲来玩玩, 随便找了一款国外软件1-click pc tuneup软件下手. 本人玩破解的原则是: 随便玩玩, 不跟经济利益挂钩, 选择无壳软件. 破解的目的是复习和巩固逆向思维, 而不是耗费时间和生命去研究各种刁蛮的加壳, 用自动脱壳工具就Ok了.

[本文介绍]

本文章一共分为10部分, 完全图文并茂, 分享在破解过程中的思维想法, 阅读本文需要一定的汇编语言, C/C++语言, 程序运行原理, 有开发软件实际经验, 熟悉Windows操作系统理论, 有基本的算法理论基础, 技术难度中等偏上.

1> 初步了解破解环境的部署

2> 初步了解1-click pc tuneup软件的主程序基本特征

3> 利用ollydbg定位你的处理注册号的函数

4> 多次陷入困境

5> 通过Qt类库的QString类相关函数找到处理注册号的函数

6> 开始分析处理注册号的函数

7> 不要满足直接获取注册号码

8> 分析注册号的输入规则

9> 分析注册号码的生成算法

10> 为1-click pc tuneup软件写注册机

[请做好基础知识储备]

上面已经提到需要相关的基础知识, 如果您在阅读文章之前基础不扎实, 有可能你不会明白文章所要表达的含义. 破解领域太广太深, 接触和学习破解之前, 最好都需要会编程, 这是必须要具备的技能. 关于如何学习和提高编程, 我的网站http://www.x86asm.com或者QQ空间已有详细说明.

[阅读顺序]

本篇文章为: “1-click pc tuneup破解实录-[附加篇]编写注册机”, 您需要按照顺序来进行阅读: "1-click
pc tuneup破解实录-[上]"、"1-click
pc tuneup破解实录-[中]“、
“1-click
pc tuneup破解实录-[下]”


>>>>>>>>>>>>>>> 第十部分: 为1-click pc tuneup软件写注册机 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

1. 在 >>> 第九部分: 分析注册号码的生成算法 <<< 我们已经总结出注册号的生成算法原理, 那么可以根据这个原理来写出一个针对1-click pc tuneup软件的注册机. 这里我首选使用Delphi开发工具来编写注册机, 因为Delphi的开发效率高, 而且生成的程序小. 下面就贴出注册机核心算法函数:
fun_Key_Create() 和 fun_Kye_OneGroup(). 那么我们在使用算法生产的时候, 只需要调用fun_Key_Create()函数就可以了.






// 注册号规则处理
function fun_Kye_OneGroup(str_param_Key_OneGroup : string;
int_param_Key_OneGroupIndex : Integer):string ;
var
dword_key : DWORD ;

dword_key_Result : array[1..3] of DWORD;

int_Index : Integer ;

str_Key_OneGroup : string ;

begin
Result := '' ;

// 参数校验
if (Length(str_param_Key_OneGroup) <> 3) or
((int_param_Key_OneGroupIndex <= 0) or
(int_param_Key_OneGroupIndex > 5) ) then
begin
Exit ;
end;

// 转换为大写
str_Key_OneGroup := UpperCase(str_param_Key_OneGroup) ;

// 转换为btye数组
for int_Index := 1 to Length(str_Key_OneGroup) do
begin

if Ord(str_Key_OneGroup[int_Index]) > $46 then
begin
dword_key_Result[int_Index] := 0 ;
end
else if Ord(str_Key_OneGroup[int_Index]) >= $41 then
begin
dword_key_Result[int_Index] := DWORD(Ord(str_Key_OneGroup[int_Index])) -
$37 ;
end
else if Ord(str_Key_OneGroup[int_Index]) >= $30 then
begin
dword_key_Result[int_Index] := DWORD(Ord(str_Key_OneGroup[int_Index])) -
$30 ;
end;
end;

// 计算因子
dword_key := dword_key_Result[3] + dword_key_Result[2] + dword_key_Result[1] +
int_param_Key_OneGroupIndex ;

// 通过 因子 计算另一个 序列号字符
dword_key := dword_key and $8000000F ;
if dword_key < 0 then
begin
dword_key := dword_key - 1 ;
dword_key := dword_key or $FFFFFFF0 ;
dword_key := dword_key + 1 ;
end;

Result := IntToHex(Ord(dword_key), 1) + str_Key_OneGroup ;

end;// End fun_Kye_OneGroup()

// 注册号生成
function fun_Key_Create():string;
const
// 注册号特征头
str_Key_Head : array[0..6] of string = ('8A77', '6DFD', '82DA', 'B4DE', '75E2', '84E4', 'E985') ;
var
str_Key_Base : string ;
begin
// 注册号字符规则
str_Key_Base := '0123456789ABCDEF' ;

Result := str_Key_Head[RandomRange(0, 6)]+
fun_Kye_OneGroup(str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)], 1)+
fun_Kye_OneGroup(str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)], 2)+
fun_Kye_OneGroup(str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)], 3)+
fun_Kye_OneGroup(str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)], 4)+
fun_Kye_OneGroup(str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)]+
str_Key_Base[RandomRange(1, 16)], 5) ;

end;// End fun_Key_Create()


结尾: 经过这次的1-click pc tuneup软件的破解, 又让我感觉回到年轻的时候, 是那么的激动. 这种感觉只有真正破解过软件的人才能体会到. 此软件破解分析周期3天, 剩下的时间都是来写这篇破解文章. 希望大家喜欢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: