联众密码的逆向算法
来源:互联网 发布:做菜软件下载排行榜 编辑:程序博客网 时间:2024/04/29 21:22
//作者:姜堰市合作银行-姚佩云 www.jynx.com.cn i_rock_1001@163.com
//首发大富翁论坛(www.delphibbs.com)blog,转载请尊重作者成果,保留此信息
闲来无事,每天上联众,联众的密码经过加密后保存在本地注册表里,看看是怎么加密的。下了个ollydbg,一路跟踪,发现算法极其简单,给出Delphi版本的解密算法(加密部分有兴趣的一起来讨论)。算法比较粗糟,谁帮优化一下:)
function Decode(aValue:String):string;
var
iValue:array [0..63]of Byte;
i,j,k,iAL,iCL:Byte;
Pass:array[0..15]of char; //密码最长不超过15位
begin
//str to int
i:=0;
j:=0;
while (1=1) do
begin
//这里需要改进
j:=Pos(' ',aValue);
if j<=0 then
begin
iValue[i]:=strToint(aValue);
break;
end;
iValue[i]:=StrToInt(Copy(aValue,1,j-1));
inc(i);
aValue:=copy(aValue,j+1,length(aValue)-j);
end;
//xor
for i:=63 downto 1 do
iValue[i-1]:=iValue[i-1] xor iValue[i];
//
for i:=15 downto 1 do
begin
iAL:=iValue[i];
iCL:=iAL;
ASM
MOV AL,iAL
SAR AL,4
AND AL,$F
MOV iAL,AL
end; //直接用SHR也可以,不过反汇编是SAR,pascal里没有SAR
j:=iAL+$30;
iAL:=iValue[j];
iCL:=iCL and $f;
iCL:=iValue[0]+iCL;
k:=iCL;
iCL:=iValue[k];
iValue[j]:=iCL;
iValue[k]:=iAL;
end;
i:=iValue[0];
j:=1;
while iValue[i]<>0 do
begin
Pass[j-1]:=chr(iValue[i]);
Inc(i);
Inc(j);
end;
Result:=Pass;
end;
//首发大富翁论坛(www.delphibbs.com)blog,转载请尊重作者成果,保留此信息
闲来无事,每天上联众,联众的密码经过加密后保存在本地注册表里,看看是怎么加密的。下了个ollydbg,一路跟踪,发现算法极其简单,给出Delphi版本的解密算法(加密部分有兴趣的一起来讨论)。算法比较粗糟,谁帮优化一下:)
function Decode(aValue:String):string;
var
iValue:array [0..63]of Byte;
i,j,k,iAL,iCL:Byte;
Pass:array[0..15]of char; //密码最长不超过15位
begin
//str to int
i:=0;
j:=0;
while (1=1) do
begin
//这里需要改进
j:=Pos(' ',aValue);
if j<=0 then
begin
iValue[i]:=strToint(aValue);
break;
end;
iValue[i]:=StrToInt(Copy(aValue,1,j-1));
inc(i);
aValue:=copy(aValue,j+1,length(aValue)-j);
end;
//xor
for i:=63 downto 1 do
iValue[i-1]:=iValue[i-1] xor iValue[i];
//
for i:=15 downto 1 do
begin
iAL:=iValue[i];
iCL:=iAL;
ASM
MOV AL,iAL
SAR AL,4
AND AL,$F
MOV iAL,AL
end; //直接用SHR也可以,不过反汇编是SAR,pascal里没有SAR
j:=iAL+$30;
iAL:=iValue[j];
iCL:=iCL and $f;
iCL:=iValue[0]+iCL;
k:=iCL;
iCL:=iValue[k];
iValue[j]:=iCL;
iValue[k]:=iAL;
end;
i:=iValue[0];
j:=1;
while iValue[i]<>0 do
begin
Pass[j-1]:=chr(iValue[i]);
Inc(i);
Inc(j);
end;
Result:=Pass;
end;
- 联众密码的逆向算法
- 一篇逆向压缩的算法
- BP算法的逆向推演
- 仿联众世界的对对碰
- 逆向最长匹配算法的实现
- 网友asprite的逆向算法测试通过
- CRC32 逆向算法的C语言实现
- 逆向一个三层循环的算法
- poj_1860 Bellman-Ford算法的逆向应用
- 逆向VC++的栈Cookies算法
- 哈希函数的逆向算法
- Android逆向-记录某密码管理APP的设计逻辑
- 密码加密的算法
- Android逆向之旅---Android中锁屏密码算法解析以及破解方案
- Android逆向之旅---Android中锁屏密码算法解析以及破解方案
- 逆向实战之Android中锁屏密码算法解析以及破解方案
- 联众世界总裁鲍岳桥:一个程序员的成功之路
- 使用AutoIt批量自动登录联众游戏的代码
- java实现可视时钟
- Visual Studio中的Class Designer设计工具需要您的建议!
- 禁用、启用本地链接(网卡)
- java学习第一天
- Windows 2K不用驱动进入ring0(demo)
- 联众密码的逆向算法
- 盛大技术经理金万钠谈:技术高手的十三个原则
- 反病毒引擎设计全解(四)
- 树的建立,遍历,及相关应用
- 让你的FireFox能够智能的切换输入法
- 手机 SMS PDU 格式参考手册
- 一种AOP后置通知的Spring实现案例--密码生成器校验
- 07.7.30
- dll函数动态调用工具1.0(Delphi+asm实现)