吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4273|回复: 3
收起左侧

[分享] oposoft All To MP4 Converter 5.6算法分析

[复制链接]
iawen 发表于 2009-3-21 18:13
这个软件的注册算法比较简单,就随意的分析了一下.
整体的思路是:将注册码的前16位两两相差,得到两者之差再加上0x41,得到后相应位置的值。

不多了,通过常用的方法我们找到程序判断的关键点,整理分析如下:
004099A0    /$  56              push esi
004099A1    |.  8B7424 08       mov esi,dword ptr ss:[esp+8]
004099A5    |.  57              push edi
004099A6    |.  8BFE            mov edi,esi
004099A8    |.  83C9 FF         or ecx,FFFFFFFF
004099AB    |.  33C0            xor eax,eax
004099AD    |.  F2:AE           repne scas byte ptr es:[edi]
004099AF    |.  F7D1            not ecx
004099B1    |.  49              dec ecx                                ;  取注册码的长度
004099B2    |.  83F9 20         cmp ecx,20                             ;  与0x20比较,即注册码的长度应为32位
004099B5    |.  74 07           je short All_To_M.004099BE             ;  相等则继续下一步,否则退出出错
004099B7    |>  5F              pop edi
004099B8    |.  33C0            xor eax,eax
004099BA    |.  5E              pop esi
004099BB    |.  C2 0400         retn 4
004099BE    |>  33C9            xor ecx,ecx                            ;  设注册码为StrCode
004099C0    |>  0FBE5431 01     /movsx edx,byte ptr ds:[ecx+esi+1]     ;  取strCode[i+1]
004099C5    |.  0FBE0431        |movsx eax,byte ptr ds:[ecx+esi]       ;  取strCode[i]
004099C9    |.  2BC2            |sub eax,edx                           ;  int n1=strCode[i]-strCode[i+1]
004099CB    |.  99              |cdq                                   ;  edx清0
004099CC    |.  33C2            |xor eax,edx                           ;  n1=n1 ^ 0
004099CE    |.  2BC2            |sub eax,edx                           ;  n1=n1-0
004099D0    |.  0FBE5431 11     |movsx edx,byte ptr ds:[ecx+esi+11]    ;  取strCode[i+0x11]
004099D5    |.  83C0 41         |add eax,41                            ;  n1+=0x41
004099D8    |.  3BD0            |cmp edx,eax
004099DA    |.^ 75 DB           |jnz short All_To_M.004099B7
004099DC    |.  41              |inc ecx
004099DD    |.  83F9 0F         |cmp ecx,0F
004099E0    |.^ 7C DE           \jl short All_To_M.004099C0
004099E2    |.  0FBE4E 0A       movsx ecx,byte ptr ds:[esi+A]          ;  strCode[10]
004099E6    |.  0FBE46 02       movsx eax,byte ptr ds:[esi+2]          ;  strCode[2]
004099EA    |.  2BC1            sub eax,ecx                            ;  n1=strCode[2]-strCode[10]
004099EC    |.  33C9            xor ecx,ecx
004099EE    |.  99              cdq
004099EF    |.  33C2            xor eax,edx
004099F1    |.  5F              pop edi
004099F2    |.  2BC2            sub eax,edx
004099F4    |.  0FBE56 10       movsx edx,byte ptr ds:[esi+10]         ;  strCode[0x10]
004099F8    |.  83C0 41         add eax,41                             ;  n1+=0X41
004099FB    |.  5E              pop esi
004099FC    |.  3BD0            cmp edx,eax
004099FE    |.  0F94C1          sete cl
00409A01    |.  8BC1            mov eax,ecx
00409A03    \.  C2 0400         retn 4
然后自己用C++写了一个简单的KeyGen:
#include<iostream>   
using namespace std;   
  
int main(){   
  char strCode[34]="0123456789ABCDEF0123456789ABCDEF";   
     
  int i=0;   
  int tmp=0;   
  for(;i<0xF;++i){   
    if(strCode[i]>strCode[i+1])   
      tmp=strCode[i]-strCode[i+1];   
    else  
      tmp=strCode[i+1]-strCode[i];   
    strCode[i+0x11]=tmp+0x41;   
  }   
     
  if(strCode[2]>strCode[0xA])   
      tmp=strCode[2]-strCode[0xA];   
    else  
      tmp=strCode[0xA]-strCode[2];   
    strCode[0x10]=tmp+0x41;   
       
    cout<<strCode<<endl;   
     
  return 0;   
}  
链接:http://www.iawen.com/read.php/233.htm

免费评分

参与人数 1威望 +1 收起 理由
CHHSun + 1 向LZ学习,52有你更强大。

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wgz001 发表于 2009-3-21 20:03
学习加膜拜     [s:371]
Hmily 发表于 2009-3-22 21:42
热火朝天 发表于 2009-3-23 00:54
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 15:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表