简单的加密算法 破解注册机的一些函数集
注册机其实就是一个专门用于分析修改软件内部程序信息的专用软件工具,它本身也是一种程序,一种高级程序。
注册机分为内部注册机和外部注册机二种,它们破解软件注册信息的过程不尽相同,但结果是一样的。内部注册机的版本必须与所要破解的原文件版相一致,否则不能起到破解作用。外部注册机有些是可以通用的(通用版)。
破解软件注册信息的目的只有一个,就是想无偿使用有偿的软件文件,这是一种侵犯软件知识产权的行为,是与法律背道而驰的违法行为。
学习破解,写注册机的一些函数集
function wzwgp(s: string): string; //取累加值
var i,sum:integer;
begin
sum:=0; for i:=1 to length(s) do
begin
sum:=sum ord(s[i]);
end;
Result :=inttostr(sum);
end;
function ASCII10ADD(s: string): string; //取累加值
var i,sum:integer;
begin
sum:=0; for i:=1 to length(s) do
begin
sum:=sum ord(s[i]);
end;
Result :=inttostr(sum);
end;
function ASCII16ADD(s: string): string; //取累加值
var i,sum:integer;
begin
sum:=0; for i:=1 to length(s) do
begin
sum:=sum ord(s[i]);
end;
Result :=inttohex(sum,2);
end;
function float( a:integer ):string;
var i:integer;
s:Extended;
begin
s:=0;
i:=1;
for i:=1 to a do
begin
s:=s 1/i;
end;
result:=FloatToStr(s);
end;
function float2( a:integer ):string;//浮点数学运算
var i:integer;
s:Extended;
begin
s:=0;
i:=1;
for i:=1 to a do
begin
if i mod 2 <>0 then
s:=s 1/i
else
s:=s - 1/i;
end;
result:=FloatToStr(s);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
edit2.text:=float2(100);
end;
{ }
function StrToBack(s: string): string;//将字符串倒转过来
var i:integer;
begin
for i:=1 to length(s) do
begin
result :=s[i] result;
end;
end;
{ }
function mdistr(str:string;int:integer):string; //取字符串的中间部份
begin
if int result:=copy(str,length(str) p 2,int) else result:=copy(str,Length(str)p 2-(int-Length(str)p 2),int); end; { } function StrToASCII16(s: string): string;//字符串转换ascii码16进制 var i:integer; begin for i:=1 to length(s) do begin result := result IntToHex(ord(s[i]),2); end; end; { } function StrToASCII10(s: string): string;//字符串转换ascii码10进制 var i:integer; begin for i:=1 to length(s) do begin result:= result inttostr(ord(s[i])); end; end; { } function StrToASCII16(s: string): string;//字符串转换ascii码16进制, var i:integer;// 如:黑夜彩虹=$BA,$DA,$D2,$B9,$B2,$CA,$BA,$E7 begin for i:=1 to length(s) do begin result := result'$'IntToHex(ord(s[i]),2) ','; end; Result:=copy(Result,0,Length(result)-1); end; { } function DoubleStr(Str: string): string;//取字符串偶位数字符 var i: Integer; begin Result := ''; for i := 2 to Length(Str) do if i mod 2 = 0 then Result := Result Str[i]; end; { } function WideStr(str:string):String; //取出字符串中的汉字 var I: Integer; begin for I := 1 to Length(WideString(Str)) do if Length(string(WideString(Str)[I])) = 2 then result:= result WideString(Str)[I]; end; { } function StrSubCount(const Source,Sub:string):integer; //判断某字符在字符串中的个数 var Buf:string; Len,i:integer; begin Result:=0; Buf:=Source; i:=Pos(Sub, Buf); Len:=Length(Sub); while i <> 0 do begin Inc(Result); Delete(Buf,1,i Len-1); i:=Pos(Sub,Buf); end; end; { } function ByteToHex(Src: Byte): String; begin SetLength(Result, 2); asm MOV EDI, [Result] MOV EDI, [EDI] MOV AL, Src MOV AH, AL// Save to AH SHR AL, 4 // Output High 4 Bits ADD AL, '0' CMP AL, '9' JBE @@OutCharLo ADD AL, 'A'-'9'-1 @@OutCharLo: AND AH, $f ADD AH, '0' CMP AH, '9' JBE @@OutChar ADD AH, 'A'-'9'-1 @@OutChar: STOSW end; end; { } function ShiftStr(str1,str2:string):string; //移位字符串 var i:integer; begin Result:=''; for i:=1 to length(str1) do begin Result:=Result str1[i] str2[i]; end; end; function SiftStr(Str: string): string; //过滤字符串 var i,j:integer; begin Result:=''; j:=Length(str); for i:=0 to j do begin if str[i] in ['0'..'9','a'..'f','A'..'F'] then Result:=Result str[i]; end; end; function IsNum(str:string;int,int2:integer): string; var i:integer; begin for i:=1 to length(str) do begin result := inttostr((StrToInt('$' str[i]) or int) mod int2) result; end; end; { } function OpeateStr(const s :string): string; //字符逐位 xor 运算 const snLen = 5 ; sn:array[1..snLen] of Integer =($0D, $01, $14, $05,$02); var i,n: integer; begin setLength(result,Length(s)); for i :=1 to Length(s) do begin n := i mod snLen ; if n = 0 then n := 5 ; result[i] := char(ord(s[i]) xor sn[n]); end; end; { } function StrToEncrypt(Str,ID,Pass:string): string;//销售王进销存_keygen算法 var username: string; a, b, c_str, c_hex, d, e, f: string; I, a_len: Integer; begin username:=str; a:=id str; //b:= 'MraketSoft62095231'; b:=pass; a_len := Length(a); c_str := ''; c_hex := ''; for I := 1 to a_len do begin c_hex := c_hex IntToHex(Byte(a[I]) xor Byte(b[I mod Length(b)]), 2) ' '; c_str := c_str Chr(Byte(a[I]) xor Byte(b[I mod Length(b)])); end; d := ''; for I := 1 to Length(c_str) do begin if Byte(c_str[I]) in [$01..$09,$0A..$0F] then d := d QuotedStr('#$' IntToHex(Byte(c_str[I]), 1)) else d := d c_str[I]; end; d := '''' d ''''; e := ''; for I := 1 to Length(d) do begin if d[I] in ['0'..'9','a'..'z','A'..'Z'] then e := e d[I]; end; f := ''; for I := 1 to Length(e) do begin f := f e[I]; if (I mod 4 = 0)and(I f := f '-'; end; Result:=f; end; { } function myStrtoHex(s: string): string; //原字符串转16进制字符串 var tmpstr:string; i:integer; begin tmpstr := ''; for i:=1 to length(s) do begin tmpstr := tmpstr inttoHex(ord(s[i]),2); end; result := tmpstr; end; function myHextoStr(S: string): string; //16进制字符串转原字符串 var hexS,tmpstr:string; i:integer; a:byte; begin hexS :=s;//应该是该字符串 if length(hexS) mod 2=1 then begin hexS:=hexS '0'; end; tmpstr:=''; for i:=1 to (length(hexS) p 2) do begin a:=strtoint('$' hexS[2*i-1] hexS[2*i]); tmpstr := tmpstr chr(a); end; result :=tmpstr; end; function encryptstr(const s:string; skey:string):string; //异或运算加密 var i,j: integer; hexS,hexskey,midS,tmpstr:string; a,b,c:byte; begin hexS :=myStrtoHex(s); hexskey:=myStrtoHex(skey); midS :=hexS; for i:=1 to (length(hexskey) p 2) do begin if i<>1 then midS:= tmpstr; tmpstr:=''; for j:=1 to (length(midS) p 2) do begin a:=strtoint('$' midS[2*j-1] midS[2*j]); b:=strtoint('$' hexskey[2*i-1] hexskey[2*i]); c:=a xor b; tmpstr := tmpstr myStrtoHex(chr(c)); end; end; result := tmpstr; end; function decryptstr(const s:string; skey:string):string;//异或运算解密 var i,j: integer; hexS,hexskey,midS,tmpstr:string; a,b,c:byte; begin hexS :=s;//应该是该字符串 if length(hexS) mod 2=1 then begin showmessage('密文错误!'); exit; end; hexskey:=myStrtoHex(skey); tmpstr :=hexS; midS :=hexS; for i:=(length(hexskey) p 2) downto 1 do begin if i<>(length(hexskey) p 2) then midS:= tmpstr; tmpstr:=''; for j:=1 to (length(midS) p 2) do begin a:=strtoint('$' midS[2*j-1] midS[2*j]); b:=strtoint('$' hexskey[2*i-1] hexskey[2*i]); c:=a xor b; tmpstr := tmpstr myStrtoHex(chr(c)); end; end; result := myHextoStr(tmpstr); end; //调用 Edit2.Text :=encryptstr(Edit1.Text,Editkey.Text); { } // XOR 加密/解密 function XorEncDec(AStr:String;Key:Byte):String; var i,n:Integer; begin n:=Length(AStr); SetLength(Result,n); for i:=1 to n do Result[i]:=Char(Byte(AStr[i]) xor Key); end; //加法加密 function AddEnc(AStr:String;Key:Byte):String; var i,n:Integer; begin n:=Length(AStr); SetLength(Result,n); for i:=1 to n do Result[i]:=Char(Byte(AStr[i]) Key); end; //加法解密 function AddDec(AStr:String;Key:Byte):String; var i,n:Integer; begin n:=Length(AStr); SetLength(Result,n); for i:=1 to n do Result[i]:=Char(Byte(AStr[i])-Key); end; 其中XorEncDec的加密/解密均为同一个过程,而加法加密、解密则需要两个过程配套使用。 procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text:=XorEncDec(Edit1.Text,123); //加密(Edit1中存放明文,Edit2存放密文) end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:=XorEncDec(Edit2.Text,123); //解密(Edit2存放密文,Edit1中存放解密的明文) end; //==================================================== //题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? function permutation( int:integer ):string; var i,j,k:integer; begin for i:=1 to int do for j:=1 to int do for k:=1 to int do begin if (i<>j) and (i<>k) and (j<>k)then result:=result inttostr(i) inttostr(j) inttostr(k) #13 #10; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Clear; Memo1.Lines.Add(permutation(4)); label1.Caption:=inttostr(memo1.Lines.Count); end; //=============================收集函数 function acafeel(Name:string):string; var strA,strB, strC : string; sum, pos : integer; begin if Name ='' then exit; for pos := 1 to length(Name) do if (ord(Name[pos]) < $20) or (ord(Name[pos]) > $7E) then begin showmessage('请输入字母或者数字,不支持中文!'); exit; end; sum := ord(Name[1]) * length(Name) * $64; strA := ' ' intTostr(sum) 'NoName SwordMan nOnAME'; strB := strA[$12] (strA[$7] strA[$8]) strA[$9] strA[$5] strA[$3] strA[$1] (strA[$14] strA[$15] strA[$16] strA[$17] strA[$18]) (strA[$D] strA[$E]) strA[$8]; for pos := 1 to length(strB) do if (ord(strB[pos]) <> $20) then strC := strC strB[pos]; if length(strC) < 14 then begin strC := strC copy(strA, 7, 23); strC := copy(strC, 1, 15) 'bywjy'; end; Result := copy(strC, 1, 5) '-' copy(strC, 5, 4) '-' copy(strC, 8, 4) '-' copy(strC, 11, 4) '-' copy(strC, 14, 7); end; function acafeel2(Name:string):string; var temp1, temp2, temp3, tempA, tempB, tempC1, tempC2, tempD1, tempD2, pos, posSTR, posADD, posSUB : integer; begin if length(Name) < 5 then //如果:注册名长度小于5位数 begin showmessage('注册名的长度必须大于4位数!'); exit; end; //如果:注册名长度大于等于5位数,小于等于9位数 if (5 <= length(Name)) and (length(Name) <= 9) then begin {大循环1}//////////////////////////////////////////////////{大循环1} // Name := EditName.Text; //第一次 temp1 := ((ord(Name[1]) $56B) xor $890428) $18; temp2 := ((ord(Name[4]) length(Name)) xor $54) xor $25D; temp3 := (ord(Name[1]) $56B) * $1024; tempA := ((temp1 * temp2) $400) temp3 ; //第二次开始循环 for pos := 2 to length(Name) do begin//取字符的ASCII码 temp1 := temp1 ((ord(Name[pos]) $56B) xor $890428); temp2 := ((ord(Name[4]) length(Name)) xor $54) xor $25D; temp3 := (ord(Name[pos]) $56B) * $1024; tempA := tempA (temp1 * temp2) temp3; end; end; if length(Name) > 9 then //如果:注册名长度大于9位数 begin {大循环1}//////////////////////////////////////////////////{大循环1} // Name := EditName.Text; //第一次 temp1 := ((ord(Name[1]) $56B) xor $890428) $18; temp2 := (((ord(Name[4]) length(Name)) xor $54) xor $25D) * $400; temp3 := ((ord(Name[1]) $56B) * $1024) $400; tempA := temp3; //第二次开始循环 for pos := 2 to length(Name) do begin//取字符的ASCII码 temp1 := temp1 temp2 ((ord(Name[pos]) $56B) xor $890428); temp2 := (((ord(Name[4]) length(Name)) xor $54) xor $25D) * temp3; temp3 := temp3 ((ord(Name[pos]) $56B) * $1024); tempA := temp3; end; temp1 := temp1 temp2; end; {小循环1}//////////////////////////////////////////////////{小循环1} // Name := EditName.Text; //第一次 tempB := ord(Name[5 1]) $32 $134A;//// {字符串反顺序}//比如开始:aCaFeeL for posSTR := length(Name) downto 1 do begin Name := Name Name[posSTR]; end; posSTR := length(Name) p 2; Name := copy(Name, posSTR 1, posSTR); {字符串反顺序}//比如结束:LeeFaCa //第二次开始循环 for pos := 4 downto 1 do begin tempB := tempB ord(Name[pos 1]) $134A;//// {字符串反顺序} for posSTR := length(Name) downto 1 do begin Name := Name Name[posSTR]; end; posSTR := length(Name) p 2; Name := copy(Name, posSTR 1, posSTR); {字符串反顺序} end; {小循环2}//////////////////////////////////////////////////{小循环2} //第一次 tempC1 := ord(Name[1]) tempB $134A; tempC2 := ((ord(Name[2]) $23) * $25A) temp1; //第二次开始循环 posADD := 2; for pos := 4 downto 1 do begin posADD := posADD 1; tempC1 := tempC1 ord(Name[1]) $134A; tempC2 := tempC2 ((ord(Name[posADD]) $23) * $25A); if (posADD = 4) or (posADD = 5) then begin {字符串反顺序} for posSTR := length(Name) downto 1 do begin Name := Name Name[posSTR]; end; posSTR := length(Name) p 2; Name := copy(Name, posSTR 1, posSTR); {字符串反顺序} end; end; {最后检测}//////////////////////////////////////////////////{最后检测} // Name := EditName.Text; tempD1 := (tempC2 $3C) xor ($1337 - ord(Name[3])); tempD2 := (tempC1 tempA) xor ($18 - ord(Name[6])); Result:= 'RHM' '-' inttostr(tempD1) inttostr(tempD2); end; //======================johnroot写的注册机改写(不懂算法的CM) function johnroot(Name:string):string; var nameok,gg,gg2,mm,mm2:pchar; i,j,j2,k:integer; begin getmem(nameok,$10); ZeroMemory(nameok,$10); getmem(mm,5); ZeroMemory(mm,5); getmem(mm2,5); ZeroMemory(mm2,5); for i:=0 to (length(name)-1) do begin nameok[i]:=Name[i]; end; j:=0; for i:=0 to $f do begin k:=ord(nameok[i]) xor $82; j:=j k; end; gg := pchar(inttostr(j)); j:=0; for i:=0 to $f do begin k:=ord(nameok[i]) xor $28; j2:=j2 k; end; gg2 := pchar(inttostr(j2)); if length(gg2)<4 then begin gg2:=pchar('0' string(gg2)); end; for i:=0 to 3 do begin mm[i]:= char($69 - ord(gg[i])); end; for i:=0 to 3 do begin mm2[i]:= char($69 - ord(gg2[i])); end; Result:=string(gg) string(gg2) string(mm) string(mm2); end; By:黑夜彩虹
人人网存在csrf漏洞的修复方案是什么?
CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,
详情2018-02-14 10:17:56责编:llp 来源:驱动管家什么是物联网?怎么保证物联网的安全?
物联网(Internet of Things)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普适服务智能化3个重要特征。物联网安
详情2018-01-11 18:13:51责编:llp 来源:驱动管家存在于ask文件的phpcms2008注射漏洞代码是什么?
中秋节到了,这里我送上phpcms2008的一枚注射漏洞!!希望各位朋友多多支持本站啊~~漏洞存在于ask search php文件,以下是漏洞代码:if($keywords){$where = " AND title LIKE & 39;%$keywords%& 39; ";}$i
详情2018-02-16 15:34:17责编:llp 来源:驱动管家公共wifi密码共享不要随便连接 教你安全使用公共wifi网络
虽然用户使用公共Wi-Fi存在不少风险,但用户还是可以养成一些习惯来更安全地使用公共Wi-Fi网络。1、关掉共享。用户在工作场所或自己家里使用笔记本电脑时可能会与其他电脑共享文件及文件夹,但在使用公共Wi-Fi时
详情2018-01-17 16:25:05责编:llp 来源:驱动管家压缩和删除sql server事务日志有哪些方法?各个步骤又是什么?
这个问题很多人受到了困扰,日志动辄十几个g问:SQLServer中的事务日志应该怎样压缩和删除?答:具体方法有3种。方法一:第一步:backup log database_name with no_log或者 backup log database_name wit
详情2018-01-14 21:18:51责编:llp 来源:驱动管家又拍图片管家支付漏洞介绍 怎么修复又拍图片管家支付漏洞?
又拍网旗下又拍图片管家v yupoo com在对支付进行处理时,未使用SSL安全连接,也没有对购买时间进行限制。导致当购买时间为负数时,不但不会从帐户中扣除相应的金额,反而还会对帐户进行充值。这里以续费VIP服务为
详情2018-02-09 17:23:26责编:llp 来源:驱动管家查找linux系统入侵证据的步骤,从这几方面下手
要查找linux系统入侵证据,可从如下几个方面入手:last,lastlog命令可查看最近登录的帐户及时间2 var log secure , var log messages日志信息可以通过accept关键字查看系统是否有被可疑IP地址登录成功信息。
详情2018-02-15 16:26:54责编:llp 来源:驱动管家iphoto有什么功能?iphoto的格式串漏洞怎么修复?
受影响系统:Apple iPhoto & 39;08 7 1不受影响系统:Apple iPhoto 7 1 2描述:BUGTRAQ ID: 27636CVE(CAN) ID: CVE-2008-0043iPhoto是用于导入、组织和共享数码照片的工具。iPhoto在处理photocast订阅时
详情2018-01-26 17:35:10责编:llp 来源:驱动管家中国移动mas平台系统漏洞修复有什么方法?
MAS是中国移动的短信代理网关(平台)。MAS是Mobile Agent Server的简称。目前多个政府部门、国有大型企业部门、运营商、金融部门都采用该平台。MAS2 0是中国新一代的代理网关系统。漏洞有可能会泄露使用该平台
详情2018-02-07 10:28:16责编:llp 来源:驱动管家验证码的生成原理及其破解方法
所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息, 输入表单提交网站验证,验证成功后才能使用某项功能。不少网站为了防止用户
详情2018-01-16 16:39:17责编:llp 来源:驱动管家
- 网卡驱动异常连不上网怎么办?驱动人生帮助你解决这个问题
- 安卓手机模拟器怎么在电脑上安装?安卓手机模拟器安装教程
- 常用的cad快捷键命令有哪些?cad快捷键汇总
- 三星S9值不值得买?细数GALAXY S9五大亮点
- 二代AirPods或将加入Siri 耳内AI能否成为潮流?
- 【游戏攻略】栓动狙击枪的使用指南:M24与AWM的区别
- 怎么查看ios8耗电?ios8耗电量哪里可以看到?
- 多少钱才能买到大神f2?大神f2的报价
- 苹果电脑可以共享打印机吗?苹果电脑打印机共享怎么设置?
- 跨站脚本攻击和跨站请求伪造的解决思路
- 更新驱动程序失败是什么原因?如何解决驱动更新失败问题
- 有哪些比较好的bt下载软件推荐?bt下载软件怎么选?
- 3389肉鸡快捷键怎么用?3389肉鸡快捷键汇总
- 佳能镜头哪款最好?佳能镜头推荐
- 网通为什么要封路由器?网通封路由器了怎么办?
- 大神x7如何设置网络模式?大神x7设置网络模式的步骤
- 酷派大神f2全网通怎么样?酷派大神f2全网通的性能如何?
- 安卓手机的mac地址在哪儿查看?查看手机本机MAC地址的方法
- 什么是死循环?帮你弄懂死循环的含义
- 驱动程序签名是什么?驱动程序数字签名有哪些用处