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

[作者]
网名: 猪头三
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天, 剩下的时间都是来写这篇破解文章. 希望大家喜欢! 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是代码教父

我的创作动力离不开你的真诚激励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值