Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网络安全 > 黑客技术 > 飞跃英语Ⅳ算法分析
【标  题】:飞跃英语Ⅳ算法分析
【关键字】:算法分析,英语
【来  源】:网络

飞跃英语Ⅳ算法分析

Your Ad Here 第二个小东东是个小程序,是破解《飞跃英语Ⅳ》遗留下来的一个东东,价值不大,不过扔掉又可惜,所以就顺便贴上来吧。另外对我来说也是有点纪念意义的。
《飞跃英语Ⅳ》是我最后的一个破解,这套软件包含《我爱背单词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);                    //写入解码字符
        }
支票快打 V3.01 算法分析:【上一篇】
算法分析报告(1.2) 下:【下一篇】
【相关文章】
  • 支票快打 V3.01 算法分析
  • 英语会话精灵 V2.0 算法分析
  • 某电子书注册破解实录 算法分析
  • 《我也爱背单词2002+》破解过程 算法分析
  • 文晟扫描5. 0 之破解经过 算法分析
  • “天音怒放”手动脱壳及破解 算法分析
  • 轻松试卷 V4.5版破解实录 算法分析
  • 梦幻屏保 V1.1 算法分析
  • 立体画梦工厂专业版-算法分析
  • *出租销售系统 5.6--算法分析 上
  • 【随机文章】
  • Testing in Spring Project (1)-DAO Test
  • 如何切换VC的默认源程序控制软件
  • CIH的病毒机理
  • HANOI塔问题的动画演示
  • 一站式系统
  • IPTV关键技术综述
  • 用TRW2000破解的步骤和破解经典句式
  • C的九九乘法代码
  • 用Authorware制作电子相册
  • 1999年全国计算机等级考试四级试卷
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.