SEVEN的软件漏洞分析路之一

admin 2022年5月11日05:57:49评论33 views字数 2637阅读8分47秒阅读模式


SEVEN的软件漏洞分析路之一

最近在看0Day的软件漏洞分析,越玩越爽,停不下来了,然后发现这本书真是本好书,不过环境有点跟不上潮流了,书上的环境是Windows XP 32Bit的,但是现在都2019年了,所以我打算使用紧跟潮流但又尽量满足书上的环境——Windows 10 Profession 32Bit的。
一、环境以及要用的软件

SEVEN的软件漏洞分析路之一


下图是系统信息,别看电脑配置,这就一个虚拟机而已啦~~~


SEVEN的软件漏洞分析路之一

二、实验目的
       本次实验的目的是通过更改软件的十六进制值达到输入任何密码都能突破验证。
三、实现过程
      首先我们用VC++ 6.0自己编写一个可供此次实验的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!nn");
        }
        else
        {
        printf("Yes, your password is True!n");
            break;
        
  

上述代码的具体意思不作解释,若想看懂请自行翻阅C语言的相关书籍,比如C语言编程兵书等等。
       上述代码经过编译运行会形成如下的运行结果:


SEVEN的软件漏洞分析路之一


从运行结果与我们程序的代码不难发现,这个软件的密码只会是1234567,那么现在关闭它,开始我们的破解之路吧,先用IDA Pro打开这个名为Crack的exe文件,我的exe文件在C:MyProjectsDebugCrack.exe此目录下,大家请找到自己的文件所在位置,打开之后会出现如下图的样子


SEVEN的软件漏洞分析路之一


某些时候打开会是一个一个的图片,请仔细看上图中的红框对应你软件的位置,那里有个黄色的小箭头鼠标点住它往左拖就可以看到上面这种样子了。
在上图黑框中有我们程序中出现的一句话,这里是我们输入错误密码时才会出现的,那么前面的“JE short_loc xxxxxx”这句话其实就代表了程序中的if语句,请将这句话前面的号码记住复制下来我这里是004010D5,如下图:


SEVEN的软件漏洞分析路之一


为啥要记住这个呢?因为我们就要从if语句下手,分析程序可以知道if...else...语句其实就是用来判断我们输入密码正确错误的关键,所以要对症下药鸭~~~当我们找到004010D5时就可以关闭上一步的软件了,接下来打开OllyDBG,让我们动态的调试这个程序以便可以更好的为下面的步骤做准备,打开之后应该会出现下图的样子


SEVEN的软件漏洞分析路之一


 按Ctrl+G,在弹出的窗口中输入刚刚复制的十六进制地址。如下图


SEVEN的软件漏洞分析路之一


点击OK之后会跳转到前面第二步中我们看到的代码上。如上图红框,注意红框中的数字“74”哦!点击之后按F2,打个断点,接下来按F8进行单步调试,在Crack程序的运行框中出现“please input password”字样后输入一个错误的密码,再返回到上图,点击“JE short_loc xxxxxx”字样的代码句,下面一个小框中会出现“Jump is NOT taken”的字样。如下图


SEVEN的软件漏洞分析路之一


 这本身是一个错误的密码,按照程序的逻辑,它会给我们打印“No, your password is False!”,但别忘记我们的初心是想让它给我们打印“Yes, your password is True!”,这时候我们双击“JE short_loc xxxxxx”字样的代码句,在弹出的框中将“JE”改成“JNE”,后面保持原状,之后点击Assemble按钮,注意看这句话它前面的数字变成了“75”哦,最后点击Olly DBG软件最上面的倒三角按钮。如下图


SEVEN的软件漏洞分析路之一


 这时候再转回去看输出的结果,你会惊奇的发现,咦,怎么打印的是“Yes, your password is True!”啊!这样我们的目的也已经达到了,可这并不是我们的终极目标,我们是想要修改自己编的软件,从根源上修改它!迫不及待了么?赶快进入下一步吧!
       在这一步中我们需要用到第四个软件——LordPE,在打开之前请关闭OllyDBG软件,LordPE打开之后界面如下图所示


SEVEN的软件漏洞分析路之一


点击PE Editor按钮打开Crack.exe之后会出现下图的样子


SEVEN的软件漏洞分析路之一


 这里我们主要是记住ImageBase后面的十六进制数字,用前面得到的十六进制数字减这个十六进制数字得到004010D5 - 00400000 = 0x10D5,这里不介绍这两个是什么,以后专门写篇文章介绍这个东西。得到0x10D5后就可以关闭这个软件了,如果你用的是Windows10 64Bit的系统,你会发现你的ImageBase与我的完全不一样,如下图是64位Windows10的ImageBase


SEVEN的软件漏洞分析路之一


 说实话很激动,因为这是最后一步了,最后我们打开UltraEdit,将Crack.exe拖入UltraEdit中,会出现一大片数字和字母,这是啥?茫然,懵逼,不知所措,完全看不懂嘛!别怕,我也看不懂。打开之后按Ctrl + G,在弹出的框中输入0x10D5之后回车,会跳转到一个地方,如下图


SEVEN的软件漏洞分析路之一


在上图中箭头指向的地方有一个醒目的74,还记得前面第3步说过的数字“74”么?对,没错,这里的74就是第3步中的74!还记得我们将“JE”改成“JNE”之后数字变成了“75”么?知道了吧?最后一步就是将这个“74”改成“75”,然后Ctrl + S保存即可哦,QAQ~,如下图


SEVEN的软件漏洞分析路之一


这时候我们再用OllyDBG打开Crack.exe测试下发现如果输入的密码为1234567,反而是错的了,其余的反而正确了。测试如下图


SEVEN的软件漏洞分析路之一


四、后记


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

SEVEN的软件漏洞分析路之一


本文始发于微信公众号(疯猫网络):SEVEN的软件漏洞分析路之一

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月11日05:57:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SEVEN的软件漏洞分析路之一https://cn-sec.com/archives/508380.html

发表评论

匿名网友 填写信息