• 标 题:算法解析 => 密码学应用 => 炒某某财 (6千字)
  • 作 者:Yy[CCG]
  • 时 间:2002-12-1 18:16:06
  • 链 接:http://bbs.pediy.com

=======================================================================================
Yy[CCG] => 算法解析 => 炒股理财_3.21

注册形式:序列号/用户名/注册码

限制:试用一百次左右,未注册版最多可记录五十次交易记录

难度点评:初级、变态形

声    明:偶不是搞汉化的那个、注册名一大一小(Yy)搞汉化的那谓两个大大(YY)别弄错嘎!

          对本解析的惊喜打击~~~概不负责
=======================================================================================
东东用ASProtect_1.2X加壳、可自动或手动脱掉、运行跳出个窗口说有毒~~~靠~~~有呕像味

把 42DA91 的 7434 改为 EB34 运行、又跳出个数据库密码登陆窗口~~~再靠一下、Cancel掉

再出个什么鸟就不搞了~~~倒~~~注册提示窗口、进去、发现加载后主窗口的内容少了点东东

这个东东算法重点在重启验证、软件注册那里、取硬盘型号、硬盘ID、转换为序列号、并判断注册码形式及位数、把相关的信息写入注册表 注册码形式是这样 ****-****-****
=======================================================================================
***算法解析***重启验证***
=======================================================================================
这个东东比较烦、反复调用变态MD5算算算、对付的办法就是在变态MD5初始化那里设断、想看的信息会随着程序的流程显现出来、只要弄懂前后的变换算法就能搞定。
---------------------------------------------------------------------------------------
***注册码变换算法***(填入注册码 => 1234-ABCD-5678)
-----------------------------------------------------
3412 CDAB 7856 => 0097FBC8  34 12 CD AB 78 56

3412<<=1;==6825
12cd<<=1;==259B
cdab<<=1;==9B56
ab78<<=1;==56F0
7856<<=1;==F0AC
5634<<=1;==AC68

6825 9B56 F0AC => 0097F9A0  68 25 9B 56 F0 AC
              => 0097FBC8  68 25 9B 56 F0 AC
6825<<=1;==D04A
259B<<=1;==4B36
9B56<<=1;==36AC
56F0<<=1;==ADE0
F0AC<<=1;==E158
AC68<<=1;==58D0
                  <= 逆运算密文 3 2 1 逆推回去得出注册码
D04B AD36 E158 => 0097FBC8  D0 4B 36 AD E1 58

调用变态MD5算出三组最终注册码密文 <= 不可逆
=======================================================================================
序列号 变换算法 =>
====================
00420A30 <= 取硬盘型号、取硬盘ID

1:取硬盘型号调用算法1 算出硬件代码计算常量前四位

2:取硬盘 ID 调用算法1 算出硬件代码计算常量后四位

3:硬件代码计算常量 => 0x564B9D85 => 转换为系列号

0x564B9D85^=0x12345678;==0x447FCBFD

0097F640  FD CB 7F 44

FDCB<<=1;==FB96
CB7F<<=1;==96FE
7F44<<=1;==FE89
44FD<<=1;==89FB

0097F344  FB 96 FE 89 <= 系列号 

系列号 <=> 硬件代码计算常量 <= 互逆

~~~什么、逆不回去!那就在下面的点位设断 =>

004210C8  . 8B45 98        MOV EAX,DWORD PTR SS:[EBP-68] <= 硬件代码计算常量
004210CB  . 8945 9C        MOV DWORD PTR SS:[EBP-64],EAX <= 硬件代码计算常量
==========================-------------------------------------------------------------
序列号+用户名 变换算法 =>
===========================
1:用户名转换为大写

2:硬件代码计算常量+用户名 调用 变态MD5+128位转换得出逆运算密文1

0097FA2C  85 9D 4B 56 00 59 59 5B 43 43 47 5D <= 厺KV.YY[CCG]

变态MD5运算结果 =>

0097FA14  |3906DB74
0097FA18  |02CDEF80
0097FA1C  |3DDDBF94
0097FA20  |8898E7D3

128位转换 => 0097FB66  0A 92 <= 逆运算密文1
---------------------------------------------------------------------------------------
3:用户名+硬件代码计算常量 调用 变态MD5+128位转换得出逆运算密文2

0097FA2C  59 59 5B 43 43 47 5D 00 85 9D 4B 56 <= YY[CCG].厺KV

变态MD5运算结果 =>

0097FA6C  0226F32C
0097FA70  F79858DA
0097FA74  45813EE3
0097FA78  78E64F34

128位转换 => 0097FB66  F0 29 <= 逆运算密文2
---------------------------------------------------------------------------------------
4:逆运算密文1+逆运算密文2 调用 变态MD5+128位转换得出逆运算密文3

0097FB74  0A 92 F0 29

变态MD5运算结果 =>

0097FA14  |3B48F5D4
0097FA18  |5A8C4FCD
0097FA1C  |5B7BBC47
0097FA20  |93BBDD1C

128位转换 => 0097FB66  1B 64 <= 逆运算密文3
---------------------------------------------------------------------------------------
5:逆运算密文 1 2 3 调用 变态MD5算出三组最终硬件密文 <= 不可逆
---------------------------------------------------------------------------------------
6:最终硬件密文 和 最终注册码密文 对比后得出注册结果
=======================================================================================
***算法描述***
=======================================================================================
算法 => 1:(128位转换、硬盘型号转换、硬盘ID转换)
-------------------------------------------------
h1(*p)

把p[]=“E7D0C697F6F28CDA434DDAD160244AB8” 转换为这样 =>
t[]={E7 D0 C6 97 F6 F2 8C DA 43 4D DA D1 60 24 4A B8};

***(硬盘型号转换、硬盘ID转换)不用上面的转换***

k=0xffffffff;
t1=0x00000000;
for(i=0;i<strlen(t)或者用strlen(p);i++)

t2=0x00000080;
t1=t[i];或者用t1=p[i];
for(;t2!=0;)

k1=k;
k1&=0x8000;
k+=k;
t4=t1&t2;
if(t4==0x0) t3=0x00000000,k|=t3;
else t3=0x00000001,k|=t3;
if(k1==0x0) t2>>=1;
else k^=0x1021,t2>>=1;
}}
return (k);}
=============--------------------------------------------------------------------------
变态MD5设置
=============
MD5算法 网上搜噎吓就是一堆 (略)

A=0x76543210;B=0xFEDCBA98;C=0x89ABCDEF;D=0x01234567;

第四轮对换第一轮相应的参数对换掉、其它的接着按顺序调换(4=>1;1=>2;2=>3;3=>4;)
========================================================================================
算法总结:
========================================================================================
1:用户名转换为大写、序列号转换为硬件代码计算常量

2:硬件代码计算常量+用户名 调用 变态MD5+128位转换得出逆运算密文1

3:用户名+硬件代码计算常量 调用 变态MD5+128位转换得出逆运算密文2

4:逆运算密文1+逆运算密文2 调用 变态MD5+128位转换得出逆运算密文3

5:逆运算密文 3 2 1 用注册码变换算法的逆运算反推回去得出注册码
========================================================================================
--------------------------
用户名 <= Yy[CCG]
--------------------------
系列号 <= 89FE96FB
--------------------------
注册码 <= A402-0ABC-D946
--------------------------
========================================================================================
---------------
注册机:(略)
---------------
----------------------------------------------------------------------------------------
如你写出注册机勿大肆传播、哪怕你觉得偶写的这堆东东如同香烟盒上吸烟有害健康的广告、那在你行动之前先考虑清楚~~~
----------------------------------------------------------------------------------------
========================================================================================
====================
--------------------   
        Yy
--------------------
China Cracking Group
--------------------===========-----------
                              2002.12.1
                              -----------
==========================================