-
-
[旧帖]
teleport pro v1.63
0.00雪花
-
发表于:
2011-4-14 13:19
1323
-
[旧帖] teleport pro v1.63
0.00雪花
od载入后发现1.63和以前版本的注册算法竟然一样。。。。
暴力破解的话会提示文件被修改过,不能运行。。。
以前的算法和破解过程网上都有 ,我发一下我用c++写的注册机
以前的破文页面:
标 题: 【原创】Teleport Pro 1.60破解分析及算法注册机
作 者: 萧萧黄叶
时 间: 2009-06-02,18:17
链 接: http://bbs.pediy.com/showthread.php?t=90537
软件的运行过程是
1.把输入注册码变为16进制数保存
2.判断用户名位数是否大于4,如果小于推出
如果大于,循环(用户名位数-4)次
每次倒序取出4位,类似于压栈。
如用户名为:123456,取出数据是:4321
然后异或运算
3.把结果与1的结果比较相同则注册成功。
编译环境是dev c++
/**输入大于4位的用户名,输出注册码
*/
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
//input the string when the length <5 exit
void check(string t)
{
if(t.length()<5)
{
cout<<"your name must longer than four";
exit(0);
}
}
//input the string reverse orde it
void sort(string& a)
{
char temp;
int size=a.length();
// cout<<size/2<<endl;
int i=0;
while(i<size/2)
{
temp=a[size-1-i];
a[size-1-i]=a[i];
a[i]=temp;
i++;
}
}
//xor every char of two string in common length
//the result in string a
void charxor(string& a,string& b)
{
int i=0;
while(i<a.length()||i<b.length())
{
a[i]^=b[i];
i++;
}
}
//input string print hex of if
//for the reason of oxffffff00 so have a choice
void printstr_hex(string a)
{
int pwd;
int i=0,j=7;
while(i<4)
{
if(a[i]>=0xffffff00)
{
pwd+=(a[i]&0x000000ff)/16*pow(16,j);
j--;
pwd+=(a[i]&0x000000ff)%16*pow(16,j);
j--;
}
else
{
pwd+=a[i]/16*pow(16,j);
j--;
pwd+=(a[i]%16)*pow(16,j);
j--;
}
i++;
}
cout<<pwd;
}
//xor input and 5DFEE4A4 per 4 chars
void stringxor(string& a)
{
string x="\x5D\xFE\xE4\xA4";
string y;
for(int i=0;i<a.length()-4;i++)
{
y.assign(a,i,4);
sort(y); //y为倒序取出的4个字符
charxor(x,y);
}
printstr_hex(x);
}
int main()
{
string a;
cout<<"input your reg name \n";
cin>>a;
check(a); //check the number of input char
stringxor(a);
system("pause");
}
[课程]Linux pwn 探索篇!