飘云 发表于 2008-10-17 17:52:31

[PYG官方教程]开悟之门-跟飘云学算法-1


特别说明:根据网友强烈要求~~特编写~继系列之后的又一算法系列,希望大家学有所成
教程约定:出于版权考虑~全部采用2008年之前的老版本软件做试验~ 仅做研究学习!
【破文标题】奇门遁甲演义CASR 10.31 算法分析
【破文作者】飘云
【作者主页】https://www.chinapyg.com
【破解平台】WinXp
【破解工具】PEiD0.94、OllyDbg
【作者邮箱】[email protected]
【软件名称】奇门遁甲演义CASR 10.31
【软件大小】1004KB
【原版下载】http://www.onlinedown.net/soft/22167.htm
【软件简介】恒古星旋中心商城精心推出『奇门遁甲演义』面向广大奇门爱好者
一、精致的经典盘图
  完全仿照中国古代的奇门活盘并有所发展,盘图上每一块元素均可以点击查看说明或分析。另外还提供便于复制和传播的多种风格的纯文本局图
二、众多的奇门类型
  支持拆补时家奇门、置闰拆补奇门、日家奇门、月家奇门、年家奇门一共五种奇门起局
三、广阔的时间支持
  支持1901-2050年共150年时间,完全满足绝大多数用户的需要
四、计算机预测功能
  计算机能够自行运用相应的奇门原理进行相关的课题预测,例如彩票、大盘、失盗等等,还可以看计算机的奇门推理过程
五、详尽的古今注语
  1080格局的每一格局后均有详尽的现代注解和古注语,恒古星旋中心商城的作者们是将23万字硬敲进了程序,程序自动用彩色将常见的吉格凶格标明以便用户清楚看到
六、时间搜索功能
  输入你所要搜索的要求,例如正北有奇门、吉星;天遁;青龙回首等等,程序能自动在设定的时间段内搜索出所有符合条件的时间
七、简洁的方位吉凶
  将各个方位的吉凶程度计算机分析后用-8到18进行了27梯度量化,并用相应的颜色表示,便于用户及时快速知道各方吉凶
八、时间调整功能
  运用时间调整技术将北京时间调为本地时间,使预测更加精确,内有中国各大城市一年24个半月的日出时间表直接选取即可,也可按照方法自行调整  
九、完善的售后服务
  一次注册终身免费升级,所有问题均在24小时内得到答复。


【破解过程】

直逼主体算法(别问我怎么来的,不明白的话查看原来的算法教程~~~):
0040CED4|>push    ecx
0040CED5|>push    edx
0040CED6|>push    00437DF4                         ;qmdjyy10
0040CEDB|>mov   ecx, esi
0040CEDD|>call    0040D1C0                         ;计算"qmdjyy10" ASCII码总和设为Sum1
0040CEE2|>lea   eax, dword ptr
0040CEE6|>lea   ecx, dword ptr
0040CEEA|>push    eax
0040CEEB|>lea   edx, dword ptr
0040CEEF|>push    ecx
0040CEF0|>push    edx
0040CEF1|>mov   ecx, esi
0040CEF3|>call    0040D1C0                         ;计算用户名前12位ASCII码总和 设为Sum2
0040CEF8|>mov   edi, 00437DF4                  ;qmdjyy10
0040CEFD|>or      ecx, FFFFFFFF                  ;ecx 用户名长度
0040CF00|>xor   eax, eax                         ;EAX清零初始化
0040CF02|>repne   scas byte ptr es:
0040CF04|>not   ecx
0040CF06|>cmp   ecx, 0C                        ;上面计算 小于 0x0C则跳   这里ECX = 9
0040CF09|>jle   short 0040CF10
0040CF0B|>mov   ecx, 0C                        ;否则ECX = 0x0C
0040CF10|>push    ebp
0040CF11|>xor   edi, edi                         ;EDI清零初始化
0040CF13|>lea   ebp, dword ptr
0040CF16|>lea   esi, dword ptr
0040CF1A|>/mov   eax, edi
0040CF1C|>|cdq                                     ;把EAX中的字的符号扩展到EDX中去
0040CF1D|>|idiv    ecx                           ;商存放EAX,余数存放EDX
0040CF1F|>|inc   edx                           ;edx+1   设为变量i
0040CF20|>|cmp   edx, ebp
0040CF22|>|jge   short 0040CF39
0040CF24|>|mov   ebx, ebp                        ;ebx = ebp = 10
0040CF26|>|lea   eax, dword ptr
0040CF2D|>|sub   ebx, edx                        ;ebx-edx 作为循环次数
0040CF2F|>|/mov   edx, dword ptr          ;从"qmdjyy10"字符串中 第i位起取逐位ASCII送edx
0040CF31|>||add   eax, 4                         ;不解释了,自己看一下内存就知道如何要+4了
0040CF34|>||xor   dword ptr , edx         ;和用户名第i位ASCII异或,并覆盖第一位ASCII最终结果设为Xor1
0040CF36|>||dec   ebx                            ;循环次数减1
0040CF37|>|\jnz   short 0040CF2F
0040CF39|>|mov   eax, dword ptr          ;Sum1
0040CF3D|>|mov   ebx, dword ptr          ;Sum2
0040CF41|>|mov   edx, dword ptr             ;Xor1
0040CF43|>|sub   eax, ebx                        ;Sum1 - Sum2
0040CF45|>|xor   eax, edx                        ;(Sum1 - Sum2) xor Xor1
0040CF47|>|mov   ebx, 1A                         ;ebx = 0x1A
0040CF4C|>|cdq
0040CF4D|>|xor   eax, edx
0040CF4F|>|add   esi, 4
0040CF52|>|sub   eax, edx
0040CF54|>|cdq
0040CF55|>|idiv    ebx                           ;只关心余数EDX中的内容
0040CF57|>|add   dl, 41                        ;0x41是什么??去查ASCII表吧! 是 'A',加上这个的意思就是保持输出的内容为字符~~~ 不知道的去恶补一下基础之基础~
0040CF5A|>|mov   byte ptr , dl       ;保存结果
0040CF5E|>|inc   edi                           ;edi + 1
0040CF5F|>|cmp   edi, 0C                         ;循环12次,别想了,注册码是12位
0040CF62|>\jl      short 0040CF1A

【算法总结】
1.取特征码"qmdjyy10" ASCII总和,设为Sum1;
2.取用户名前12位ASCII总和,设为Sum2;
3.采用两个循环生成注册码:
外循环:12次,主要控制内循环中的变量i
内循环:10 - i 次~~~ 特征码第I位开始逐位和ASCII第i位进行异或运算并覆盖之,最终结果设为XOR1;
4.(Sum1 - Sum2) xor XOR1运算;
5.一系列的扩张、取于运算;
6.注册码生成

【算法注册】
我只贴出几个函数和框架,别偷懒,一起玩,根据算法,把循环部分完成之!!只要你拼接起来,不难吧?以后的注册机代码大都会这样做!{-------------------------------------------------------------------------------
过程名:    Sum_Ascii
作用:      计算字符串的ASCII总和
作者:      piaoyun
日期:      2008.10.17
参数:      str:string
返回值:    Integer
-------------------------------------------------------------------------------}
function Sum_Ascii(str:string):Integer;
var
i:integer;
begin
Result := 0;
for i := 1 to Length(str) do Result := Result + byte(str);
end;


{-------------------------------------------------------------------------------
过程名:    ASM_Fun
作用:      算法分析中的那一系列头晕的东西,让它来处理~~~
作者:      piaoyun
日期:      2008.10.17
参数:      sum1,sum2,xor1:integer
返回值:    Char
-------------------------------------------------------------------------------}
function ASM_Fun(sum1,sum2,xor1:integer):Char;
var
temp:Char;
begin
    asm
      pushad
      xor   eax,eax
      xor   ebx,ebx
      xor   edx,edx
      mov   eax, sum1
      mov   ebx, sum2
      mov   edx, xor1
      sub   eax, ebx
      xor   eax, edx
      mov   ebx, $1A
      cdq
      xor   eax, edx
      add   esi, 4
      sub   eax, edx
      cdq
      idiv    ebx
      add   dl, $41
      mov   temp,dl
      popad
    end;
    Result := temp;
end;

procedure TForm1.btnOkClick(Sender: TObject);
var
i,j,k:integer;
sum1,sum2,xor1:integer;
name:string;
sn:string;
const
qmdj = 'qmdjyy10';
begin
if edtName.Text <> '' then
begin
    name := edtName.Text;
    sum1 := Sum_Ascii(qmdj);
    sum2 := Sum_Ascii(leftStr(edtName.Text,12));
   
//-----------------------------------
    for i := 1 to 12 do
    begin
      //自己动脑筋拼接
      for j := k to 10 do
      begin
      //自己动脑筋拼接
      end;
      sn := sn + ASM_Fun(sum1,sum2,xor1);
    end;
    //输出注册码
    edtSn.Text := sn;
//------------------------------------

end
else
    ShowMessage('请输入用户名!');
end;【版权声明】 本文原创于P.Y.G官方,纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

iamok 发表于 2008-10-17 17:58:25

顶上,坐上飘云老大的沙发。。。。

冰糖 发表于 2008-10-17 18:11:31

大家快来跟飘云老大学算法/:09 /:09

hflywolf 发表于 2008-10-17 18:13:45

/:001 /:001 /:001

HOHO!!!!!!跟飘云老大学算法来了!!!!!!!!!!!!!!!

sheadow 发表于 2008-10-17 18:38:28

希望 能坚持带领我们走下去 !
    不希望 有太多的好的开头,只希望有一个美好的句号!:loveliness:
感谢!

月之精灵 发表于 2008-10-17 19:36:06

学习并继续关注。/:good

tianxj 发表于 2008-10-17 20:05:18

学算法,学delphi/:018

tony_liu518 发表于 2008-10-17 20:52:07

太好了,可以跟着老大学习算法了!/:018

夜冷风 发表于 2008-10-17 21:29:34

支持 .学习了!!:victory: :victory: :victory:

天使的锁链 发表于 2008-10-17 21:52:50

仔细阅读中。。。。。
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: [PYG官方教程]开悟之门-跟飘云学算法-1