zoukankan      html  css  js  c++  java
  • 软件总是会有漏洞

    软件总是会有漏洞的。

    谢老师很厉害,自己编写了很多用于教学的软件,其中一个叫英语词汇联想记忆法,当然,这个软件是用来学习英语的,但是里面藏了一个“秘密”,在某个章节下面,不是测试英语的,而是操作系统的一些问题。简单说就是在规定的时间内完成一些题目,根据答案给出成绩,和听写单词差不多。老师给了个任务,回去下载软件,进行练习,上课的时候进行现场测试比赛,根据成绩发奖,95分以上就是一等奖,90分就是二等奖,以此类推。还有一个“特等奖”,就是把软件破解了,我一听来了兴趣,准备冲击“特等奖”!

    首先是下载软件,老师把软件放在新浪共享里面了,说是共享,还是需要5个积分的,但是注册以后,先转存到网盘,然后再下载就不需要积分了。下载了,解压,里面有个setup,估计就是安装程序了,还有好多安装配置文件,最大的一个文件就是setup1.cab,里面放的是真正的软件,经测试,直接把cab文件解压以后就能执行,只是会报错,忽略错误就是了,为了破解方便,还是安装吧。

    要破解软件,首先要了解软件。运行以后,默认是以“vip”用户登录的,默认记住密码,这就说明密码应该是在本地存储的,最起码安装包里面有。破解密码我首先想到的是用星号密码查看器,但是好像并不好用,无法显示星号真正的内容,那就登录吧,然后开始尝试这个软件的各种功能,包括操作系统练习那一块。

    软件了解的差不多了,然后开始考虑怎么破解了。当然首先想到还是反汇编,在网上找了一些反汇编工具,包括OD,wdasm等。理论上说,反汇编之后,了解程序执行的流程,就可以修改里面的一些指令来对软件进行控制,例如控制登录时随便输入的密码就能登录,控制程序在计算成绩时即使得0分也返回100分,获取加密算法,就可以分析破解密码,提升权限等。但是我汇编学的不好,反编译出来后就不懂了,流程什么的都乱了,以前没用过反汇编的软件,悲剧,看来这条路不好走,果断换条路。

    Linux有句话说的是“一切皆是文件!”,Windows也差不多,好在谢老师上课的时候提醒了我们一句:“我的软件是绿色软件,安装以后只在C盘根目录建立一个‘xieyb’文件夹,卸载软件的话删除这个文件夹,不会留任何垃圾!”。从这句话我们可以分析出来,老师的软件肯定是放在这个文件夹里面,数据也是放在这个文件夹里面,或许我们可以考虑从文件来破解软件。

    打开“C:\xieyb\”文件夹,里面果然有好多文件,接下来就是分析文件了,里面有几种类型的软件,exe文件,不用说,是可执行文件,控制软件执行,dll文件,是程序的一些动态链接库,或者说函数库,也没啥的。除了这两种类型的文件外,最多的就是DBF和CDX格式的文件,这是什么格式?没听说过,百度一下,居然是VF的数据库文件,后来想想老师上课给我们展示的他的程序的源码,貌似就是VF的,看来老师把数据库直接放在程序文件夹里面了。我们这学期刚学了数据库,对数据库的基本操作有一定的了解了,但VF的数据库从来都没用过。为了破解这个数据库去学VF就没必要了,然后就尝试去网上找找,看看是否有VF数据库的管理软件,不管是图形界面的还是命令操作的,只要能连接打开数据库就行,然后继续百度(谷歌这两天被墙的不行),然后就找到了“DBF Viewer”,试了一下,真的打开啦!数据库居然没加密!激动,感觉离破解不远了!然后依次打开各个数据库,查看里面的内容,大致分了分类,里面有一个用户数据库,存放用户名和加密的密码;两个英语单词词库,多达8000多条英文词汇记录(绝对好东西啊!);一个常用语翻译数据库,多达2000个句子(练口语的好东西啊);一个存放操作系统练习题目的数据库,得到题目就可以进行有目地的准备;还有一个成绩数据库,专门存放练习的成绩,当然成绩是可以改的,这意味着,即使你得了0分,我也能改成100分(一等奖啊)。这意味这这个程序基本告破了(特等奖)。

    我们当然不能满足于此,继续分析程序和数据库,看看能有什么新发现。首先一个问题是在用户登录界面,如果不选择保存密码,那么下一次就不能用vip账户自动登录,但是我们不知道vip的密码,后台数据库里面存储的数加密以后的密码,我们只有密文,不知道加密算法(不像md5),并且密文的个数也很有限,去推断账户密码就比较费劲了。我们注意到,系统默认是记住vip的密码的,点击不记住密码之后密码就不显示了,肯定在有个配置文件来控制一个用户能否记住密码,自动登录。上面我们分析了,文件夹里面只有数据库,没有配置文件,那就从数据库入手吧,再次分析上面的的用户名和密码数据库,除了用户名和密码外,还有一个permission字段和一个xpuslogo字段,permission字段毫无疑问,肯定是权限,那么我们就能直接修改vip用户的权限和xieyb的权限相同,那么我们就有超级管理员的权限了!就能修改题目难度系数什么的了。我们注意到,里面还有一个字段“xpuslogo”,这个字段是什么呢?里面只有两种数据,一种是T,一种是F,我们发现只有vip用户的这个字段是T,其他都是F,再联想,默认只有vip用户能自动登录,这说明什么?是不是只要这个字段是T的用户就能自动登录?果断尝试,不出所料,真的是这样的,这样我们只要将谢老师的字段改成T就能以谢老师的身份登录了。虽然我们不知道谢老师的密码,但是我们一样能登录,并且做谢老师能做的事,比如说修改软件难度系数,修改题目个数等,这样答起来就简单了,哈哈,用户和权限基本告破。

     

    最后还要归结于测试比赛,如何提高测试成绩呢?当然最简单还是提交以后去后台修改成绩,哈哈,只要打开测试页面,一个题都不用做,直接提交,成绩肯定是0分,我们打开成绩数据库,里面的数据还真不少呢,谢老师和他儿子平时进行了很多测试,教子有方啊!我们找到我刚才提交成绩的记录,双击就能修改,当然成绩随便修改了,100,500,想要多少就要多少!成绩在95分以上的就是1等奖,在100分以上的呢?特等奖?哈哈。

    修改成绩容易,但是有些人不会修改成绩啊,为了帮助小白提高成绩,我们还要想想办法。我们注意到,老师上课的时候在现成演示的时候,用的是加加输入法,使用之前先导入词库,这样老师在打字的时候只要输入短语的首字母就能打出整个短语。老师用的是双拼,但是我们一般都用全拼。电脑上有搜狗,我们就可以用搜狗来导入词库,这样同学们在比赛的时候就能很快地输入了。下面的任务就是创建搜狗词库。最简单的方法就是把所有的单词都打一遍,像我这么懒的怎么受得了?写个程序来完成吧。首先我们是要得到所有的短语,这个我们可以在数据库里面得到,先导出到excel表,再把有用的列取出来存到记事本里面,下面就是写程序批量转换了。用python写了个小程序,代码如下:

    复制代码
    # -*- coding: utf-8 -*-
    import sys
    def openTable():
        f = open('gb-pinyin.table''r')
        table = f.read()
        f.close()
        return table

    def searchPinyin(num, table):
        if(num>0 & num<160):
            return chr(num)

        v=table.split(';')
        for i in xrange(len(v)-1,-1,-1):
            s=v[i].split(',')
            if int(s[1])<=num:
                return s[0]
                break

    def ch2en(chinese):            
        i=0
        str = ''
        while(i<len(chinese)-1):
            p = ord(chinese[i:i+1])
            if(p>160):
                i+=1
                q = ord(chinese[i:i+1])
                p = p*256+q-65536
            i+=1
            str = "%s'%s" % (str, searchPinyin(p,table))
        print str,chinese
        out = file("sougou.txt","a")
        out.write("%s %s"%(str,chinese))

    if __name__ == "__main__":
        table = openTable()
    #    if len(sys.argv) == 2:
    #
            chinese = sys.argv[1]
    #
        else:
    #
            sys.exit("Usage: python "+sys.argv[0]+" chinese")
    #
        chinese = raw_input(">")
        fr = open("os.txt").readlines()
        for line in fr:
    #        print line
            if line:

                ch2en(line) 

    复制代码

    鉴于同学们没学过python,代码就不解释了,程序实现的功能就是逐行从文件读取中文,然后输出搜狗词库的标准格式。例如

    “方便性”经过转换之后就是“'fang'bian'xing 方便性”。

    然后导入到搜狗里面,这样只要打首字母就能打出整个单词了。比如打“pclxt”就能打出“批处理系统”。在这里提醒大家一句,最好不要用搜狗等高级的输入法,即使用的话也不要一次输入一整句话,因为搜狗对你输入的所有句子都给你记录下来,这当然加快了你的输入速度,但是这也保存了你的隐私,并且这个隐私没有任何加密措施,任何人都能倒出来查看,聊天记录什么的虽然在QQ上看不到,但是在搜狗上却能看到,这算搜狗的一个漏洞吧。建议大家一次只打一个字或一个短语,或者干脆不用高级输入法。

     

    生成好的词库让zcz导入试试,可以有效提高输入速度,但是zcz仍然向我反映,虽然打字速度快了,但大脑仍然经常短路,时间太紧,速度还是不够快,仍然得不了高分。悲剧,看来,我要使出我的杀手锏了:变速齿轮!变速齿轮是什么?就是一个可以修改软件运行速度的软件,多在游戏中使用,例如有些游戏很快,比如赛车,我们可以放慢速度,有些游戏很慢很无聊,我们可以加快速度。这个软件用到这里,相信大家也明白了,放慢软件的速度!经过测试,通过调节软件速度,右上角的时间基本不走了,本来是2分钟完成的测试,你就可以用2天来完成。哈哈,不急,一个词一个词慢慢打吧,时间总是有的!只要会,就能做完!

    上面提到了,数据库里面还有一个英语单词和句子,这可是好东西啊,有了这个数据库,我们就能自己开发一些英语学习软件,比如说词典,记单词软件,英语小游戏等。感谢谢老师送给我们这么优秀的资源!

    周三要单片机考试,还没预习完呢,悲剧!不吹了,抓紧时间去预习去!破解过程中用到的软件和程序大家可以到这里下载 :http://pan.baidu.com/share/link?shareid=121876&uk=2114973662


    博主ma6174对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处http://www.cnblogs.com/ma6174/

    对文章有啥看法或建议,可以评论或发电子邮件到ma6174@163.com

  • 相关阅读:
    Python 线程池,进程池,协程,和其他
    python 类的特殊成员方法
    Python 进程,线程,协程
    Python Socket第二篇(socketserver)
    Python 面向对象
    Python Socket
    saltstack 基础
    Python 面向对象学习
    Python 常用模块
    日志滚动工具
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2754541.html
Copyright © 2011-2022 走看看