用户
搜索
  • TA的每日心情
    擦汗
    2019-6-21 00:06
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]经常看看I

    版主

    Rank: 7Rank: 7Rank: 7

    5

    主题

    23

    帖子

    194

    魔法币
    收听
    0
    粉丝
    3
    注册时间
    2016-10-20

    i春秋签约作者

    发表于 2019-9-18 11:00:40 83159
          Hello, 好久没写文章了啊!最近在看0Day的软件漏洞分析,越玩越爽,停不下来了,然后发现这本书真是本好书,不过环境有点跟不上潮流了,书上的环境是Windows XP 32Bit的,但是现在都2019年了,所以我打算使用紧跟潮流但又尽量满足书上的环境——Windows 10 Profession 32Bit的。
    一、环境以及要用的软件

    系统

    软件
    Windows 10 Profession 32Bit
    UltraEdit

    LordPE

    OllyDBG

    VC++ 6.0

    IDA Pro


    下图是我的系统信息,别看电脑配置,这就一个虚拟机而已啦~~~
    系统.png
    二、实验目的

           本次实验的目的是通过更改软件的十六进制值达到输入任何密码都能突破验证。

    三、实现过程

          首先我们用VC++ 6.0自己编写一个可供此次实验的C语言程序,代码如下:

    [C] 纯文本查看 复制代码
    #include<stdio.h>
    
    #include<string.h>
    
    #define PASSWORD "1234567"
    
    
    
    int verify_password(char *password)
    
    {
    
    	int authenticated;
    
    	authenticated = strcmp(password, PASSWORD);
    
    	return authenticated;
    
    }
    
    void main()
    
    {
    
    	int valid_flag = 0;
    
    	char password[1024];
    
    	while(1)
    
    	{
    
    		printf("please input password: ");
    
    		scanf("%s", password);
    
    		valid_flag = verify_password(password);
    
    		if(valid_flag)
    
    		{
    
    			printf("No, your password is False!\n\n");
    
    		}
    
    		else
    
    		{
    
    			printf("Yes, your password is True!\n");
    
    			break;
    
    		}
    
    	}
    
    }



           上述代码的具体意思不作解释,若想看懂请自行翻阅C语言的相关书籍,比如C语言编程兵书等等。
           上述代码经过编译运行会形成如下的运行结果:
    运行结果.png
           从运行结果与我们程序的代码不难发现,这个软件的密码只会是1234567,那么现在关闭它,开始我们的破解之路吧,先用IDA Pro打开这个名为Crack的exe文件,我的exe文件在C:\MyProjects\Debug\Crack.exe此目录下,大家请找到自己的文件所在位置,打开之后会出现如下图的样子
    IDA调试.png
           某些时候打开会是一个一个的图片,请仔细看上图中的红框对应你软件的位置,那里有个黄色的小箭头,鼠标点住它往左拖就可以看到上面这种样子了。
    在上图黑框中有我们程序中出现的一句话,这里是我们输入错误密码时才会出现的,那么前面的“JE short_loc xxxxxx”这句话其实就代表了程序中的if语句,请将这句话前面的号码记住复制下来,我这里是004010D5,如下图:
    image.png
           为啥要记住这个呢?因为我们就要从if语句下手,分析程序可以知道if...else...语句其实就是用来判断我们输入密码正确错误的关键,所以要对症下药鸭~~~当我们找到004010D5时就可以关闭上一步的软件了,接下来打开OllyDBG,让我们动态的调试这个程序以便可以更好的为下面的步骤做准备,打开之后应该会出现下图的样子
    image (1).png
            按Ctrl+G,在弹出的窗口中输入刚刚复制的十六进制地址。如下图
    image (2).png
           点击OK之后会跳转到前面第二步中我们看到的代码上。如上图红框,注意红框中的数字“74”哦!点击之后按F2,打个断点,接下来按F8进行单步调试,在Crack程序的运行框中出现“please input password”字样后输入一个错误的密码,再返回到上图,点击“JE short_loc xxxxxx”字样的代码句,下面一个小框中会出现“Jump is NOT taken”的字样。如下图
    image (3).png
           这本身是一个错误的密码,按照程序的逻辑,它会给我们打印“No, your password is False!”,但别忘记我们的初心是想让它给我们打印“Yes, your password is True!”,这时候我们双击“JE short_loc xxxxxx”字样的代码句,在弹出的框中将“JE”改成“JNE”,后面保持原状,之后点击Assemble按钮,注意看这句话它前面的数字变成了“75”哦,最后点击Olly DBG软件最上面的倒三角按钮。如下图
    image (4).png
           这时候再转回去看输出的结果,你会惊奇的发现,咦,怎么打印的是“Yes, your password is True!”啊!这样我们的目的也已经达到了,可这并不是我们的终极目标,我们是想要修改自己编的软件,从根源上修改它!迫不及待了么?赶快进入下一步吧!

           在这一步中我们需要用到第四个软件——LordPE,在打开之前请关闭OllyDBG软件,LordPE打开之后界面如下图所示
    image (5).png
           点击PE Editor按钮打开Crack.exe之后会出现下图的样子
    image (6).png
           这里我们主要是记住ImageBase后面的十六进制数字,用前面得到的十六进制数字减这个十六进制数字得到004010D5 - 00400000 = 0x10D5,这里不介绍这两个是什么,以后专门写篇文章介绍这个东西。得到0x10D5后就可以关闭这个软件了,如果你用的是Windows10 64Bit的系统,你会发现你的ImageBase与我的完全不一样,如下图是64位Windows10的ImageBase
    image (7).png

           说实话很激动,因为这是最后一步了,最后我们打开UltraEdit,将Crack.exe拖入UltraEdit中,会出现一大片数字和字母,这是啥?茫然,懵逼,不知所措,完全看不懂嘛!别怕,我也看不懂。打开之后按Ctrl + G,在弹出的框中输入0x10D5之后回车,会跳转到一个地方,如下图
    image (8).png
           在上图中箭头指向的地方有一个醒目的74,还记得前面第3步说过的数字“74”么?对,没错,这里的74就是第3步中的74!还记得我们将“JE”改成“JNE”之后数字变成了“75”么?知道了吧?最后一步就是将这个“74”改成“75”,然后Ctrl + S保存即可哦,QAQ~,如下图
    image (9).png
           这时候我们再用OllyDBG打开Crack.exe测试下发现如果输入的密码为1234567,反而是错的了,其余的反而正确了。测试如下图
    image (10).png

    四、后记

           这是一个连载文章,后面有空我就会一直更新这一系列直至全部完成。

    五、参考书籍

           《0day安全软件漏洞分析技术(第2版)》 王清 主编


    村长CZ 管理员 有事找村长QQ:780876774 i春秋认证 幽默灌水王 春秋文阁 春秋达人 春秋巡逻 春秋游侠 积极活跃奖 核心白帽
    沙发
    发表于 2019-9-18 11:29:52
    让我们一起干大事!
    村里现在正在招聘:村委宣传队!
    有兴趣的表哥加村长QQ:780876774!
    使用道具 举报 回复
    给我家的七七小妹妹加油助威啦   七妹妹棒棒哒
    使用道具 举报 回复
    mark~~~~~~
    使用道具 举报 回复
    发表于 2019-9-21 13:10:14
    可爱的小雨淅淅 发表于 2019-9-18 14:33
    给我家的七七小妹妹加油助威啦   七妹妹棒棒哒

    雨妹妹,你又皮了。
    使用道具 举报 回复
    分析很详细,不过 这应该算“破解",
    使用道具 举报 回复
    J0o1ey 版主 QQ547006660~欢迎交流 秦 春秋文阁 春秋游侠 核心白帽 i春秋签约作者 幽默灌水王 积极活跃奖 白帽高手
    6#
    发表于 2019-10-6 10:09:29
    分析很详细
    有培训需求或是技术交流需求的朋友可以联系我~QQ547006660交流群820783253
    使用道具 举报 回复
    发表于 2019-10-9 16:16:14

    谢谢,大佬,大佬谬赞了。
    使用道具 举报 回复
    发表于 2019-10-9 16:16:47
    手机用户dhTTaJ 发表于 2019-10-3 17:45
    分析很详细,不过 这应该算“破解",

    也算是分析吧,只是分析不就为了最后破解么?哈哈哈
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册