老文章档案 · 2003 年

飞跃英语Ⅳ(3千字) 算法分析

天下资讯 · 破解文章 · 2003-08-05 · 作者:stuman 人气: · 出处:赢政天下整理收藏)

第二个小东东是个小程序,是破解《飞跃英语Ⅳ》遗留下来的一个东东,价值不大,不过扔掉又可惜,所以就顺便贴上来吧。另外对我来说也是有点纪念意义的。

《飞跃英语Ⅳ》是我最后的一个破解,这套软件包含《我爱背单词2001》、《泛读》、《百部速读》等一系列程序,加密原理都一样,主程序用VB5,接口C写的DLL,另外有一个驻留进程不断和飞跃网站联系核对注册码。如果检测到盗版注册码就在硬盘和注册表里写入标记并要求联网再注册。破解也是有两种方法:1、去掉驻留进程和程序自效验,用已知的注册码注册,或者爆破。2、跳过注册对话框,去掉所有限制(就是根本不注册但有注册版本的功能)。这个软件加密还可以,花了我两个礼拜的时间才分析透,笔记一大叠。由于和作者联系并交流过加密和解密的技巧,所以也就不方便写出来了。

下面的程序和破解无关。因为《泛读》、《百部速读》的文档加密,所以不能添加自己喜欢的文章到软件中读。我跟踪了程序,找到加密原理,它是根据一个密码表进行字节的XOR,所以是可逆的。我写了解码程序,下面的这两个密码表是共享版的,零售版不同,但都能在程序相同的位置上找到。不过后来我嫌他的程序不能放大/缩小窗口、也不能一行一行移动,就自己写了一个功能类似的程序用,下面的程序也就再也没用过了。只贴出来交流一下。用TC2写和编译,是对以前流行TC时代的怀念。

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

void main( void )

{

FILE *fpIn, *fpOut;

char szInName[100],szOutName[100];

char cChar;

char szCode1[0x38]={ //密码表1,解码泛读系列。从W32Dasm的反编译文件中拷贝过来的(1000e030)

0x17, 0x0E, 0x1A, 0x7B, 0x4F, 0xDF, 0x93, 0x0E,

0x3A, 0x1A, 0xE8, 0x2E, 0x58, 0xC1, 0x2C, 0x1B,

0x34, 0x5A, 0xCF, 0x0A, 0x57, 0x19, 0xF9, 0xB1,

0xDC, 0xAF, 0x17, 0x84, 0x21, 0x2D, 0xBB, 0x9C,

0x20, 0x9C, 0x22, 0xE8, 0xBD, 0x9C, 0xB7, 0xA7,

0x16, 0x16, 0x21, 0x1B, 0x21, 0xF4, 0xBC, 0xA5,

0x86, 0x1B, 0x3A, 0x62, 0x2D, 0xE0, 0xB2, 0x4E};

char szCode2[0x38]={ //密码表2,解码百部速读系列。从W32Dasm的反编译文件中拷贝过来的(1000e068)

0x7B, 0x3A, 0xE2, 0x17, 0xB3, 0x17, 0x2F, 0xD6,

0x9E, 0xE2, 0x20, 0x92, 0xBC, 0x5D, 0x90, 0x07,

0xFC, 0xBE, 0xCF, 0xD2, 0xBB, 0x7D, 0x31, 0x4D,

0x14, 0x4B, 0x7B, 0x20, 0xE9, 0x91, 0x57, 0x38,

0x84, 0x38, 0xEA, 0x20, 0x59, 0x38, 0x53, 0x43,

0xDE, 0x7A, 0xE9, 0xE3, 0xE9, 0x2C, 0x58, 0x41,

0x22, 0x7F, 0x9E, 0xC6, 0x59, 0x22, 0x4E, 0x4E};

char *pCh1,*pCh2;

char *szCode;

szCode=szCode1; //定义它则解码泛读系列

// szCode=szCode2; //定义它则解码百部速读系列

printf("Input in file name:"); //取原文件

gets( szInName );

if (*szInName==0x0)

exit(0);

printf("Input out file name:"); //取转化后文件

gets( szOutName );

if (*szOutName==0x0)

exit(0);

fpIn=fopen( szInName,"rb" ); //打开原文件

if ( ! fpIn )

{

printf("Can not open %s\n",szInName);

exit(0);

}

fpOut=fopen( szOutName,"wb" ); //创建转化后文件

if ( ! fpOut )

{

printf("Can not create %s\n",szOutName);

fclose(fpIn);

exit(0);

}

pCh2=szCode+0x38; //pCh2指向密码表最后一个字符的下一位

while ( true )

{

for ( pCh1=szCode; pCh1<pCh2; pCh1++ )//逐字节解码

{

if ( feof(fpIn) ) //如果结束

{

fclose(fpIn);

fclose(fpOut);

printf("success");

exit(0);

}

cChar=fgetc(fpIn); //得到字符

cChar ^= *pCh1; //xor解码

fputc(cChar,fpOut); //写入解码字符

}

}

}

(出处:赢政天下整理收藏)

相关资讯:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1998-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史