美文网首页
0day安全:软件漏洞分析技术(第二版) 例子一

0day安全:软件漏洞分析技术(第二版) 例子一

作者: 一只老不上架的鸭子 | 来源:发表于2019-07-28 09:30 被阅读0次

     书中摘抄的代码如下,编译后的EXE文件,实现了简单的密码校验的功能。此次实验的目的,是按照书中的描述,修改EXE文件,使输入非匹配的密码可以通过验证。

    #include <stdio.h>

    #include <string.h>

    #define PASSWORD "1234567"

    int verify_password (char *password)

    {           

        int authenticated;

        authenticated=strcmp(password,PASSWORD);

        return authenticated;

    }

    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("incorrect password!\n\n");

            }else

            {

                printf("Congratulation! You have passed the verification!\n");

                break;

            }

        }

    }

    使用Dev-C++ 5.11进行编译,编译的时候选择32位程序发布,编译生成文件0day_test1.exe:

    图一

    该程序运行效果如下:

    图二

    使用IDA静态反编译工具打开该EXE文件,找到匹配PASSWORD的判断分支指令,尝试修改EXE的代码逻辑为:PASSWORD匹配失败跳转到原来的密码比较成功逻辑分支,实现输入非匹配密码可以通过验证。

    图三

    在该指令上按空格切换命令界面,获取该指令的VA地址

    图四

    得到该指令的VA地址在.text段的00401578,可以看到得到的VA地址和原书中描述的地址并不一样。

    .text:00401578                 jz      short loc_401588

    关掉VA,使用管理员权限打开ollydbg,打开0day_test1.exe:

    然后使用CTRL+G直接跳转到上述的VA地址

    图五

    双击该指令,将原本的“JE SHORT 00401588”改成“JNE SHORT 00401588”

    图六

    可以看到指令已经被改:

    图七

    目前被被改的仅仅是内存中的指令,需要写到EXE文件中。书中使用原始的方式在EXE文件中找到指令并修改,由于ollydbg有现成的功能实现这个功能。

    单击该指令,右键--Edit--Copy to executable

    图八

    弹出窗口提醒保存文件,确认OK。然后从窗口选择保存文件

    图九 图十

    运行破解的EXE文件,可以发现输入错误密码可以通过认证。

    图十一

    上面使用ollydbg实现PE文件(EXE文件)的格式修改,下面实验手工查找PE文件中的执行指令。

    使用PE Explorer打开PE文件

    图十二

    EXE文件的代码段.text段,内存装载基地址(Image Base)=00401000

    指令的虚拟内存地址(VA)=00401578

    .text段文件中偏移地址 = 00000400 

    计算指令的文件偏移地址

    指令在文件偏移地址=虚拟内存地址(VA)- 装载基址(Image Base)+.text段文件中偏移地址

    =00401578-00401000+00000400 

    =978

    使用WinHex直接跳到指令在文件偏移地址:

    图十三 图十四

    改成:

    图十五

    保存文件,并运行:

    相关文章

      网友评论

          本文标题:0day安全:软件漏洞分析技术(第二版) 例子一

          本文链接:https://www.haomeiwen.com/subject/zplurctx.html