zoukankan      html  css  js  c++  java
  • IDA Pro、OllyDbg、LordPE和UltraEdit简单实用实验

    以上工具可到看雪论坛自行下载。

    Crack小实验:

    1、实用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;
    }
    
    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\n");
                break;
            }
        }
    }
    

      我们必须输入正确的密码“1234567”才能得到密码验证的认证。

    2、打开IDA,把.exe打开。按F12,IDA绘制流程图,用鼠标选定分支点,按空格切换到汇编指令界面对应VA:0040106E(jz short loc_40107F)

    3、打开OllyDbg打开文件ctrl+G直接跳到IDA得到的VA:0x0040106E,按F2下断点,按F9运行。

    4、用lordPE打开文件查看PE文件节信息

    计算对应的JZ指令的文件偏移地址:

    =虚拟内存地址(VA)-装载地址-节偏移

    =0x0040106E-0x400000(固定)-(0x00001000 - 0x00001000)

    =0x106E

    也就是说,这条指令在PE文件中位于距离文件开始处106E字节的地方

    5、用UltraEdit打开文件Ctrl+G,输入0x106E直接跳转到JZ处改为JNZ成功\(^o^)/~

  • 相关阅读:
    对象,对象引用变量理解
    String 和 new String()的区别
    基本类型和对象类型的区别
    MySQL数据库设计总结
    CSS自定义字体的实现,前端实现字体压缩
    GitHub密钥生成
    ES3、ES5、ES6对象代理的写法差异
    Node.js+Navicat for MySQL实现的简单增删查改
    Vue项目部署到服务器
    Node.js+Navicat for MySQL实现的简单增删查改
  • 原文地址:https://www.cnblogs.com/libao/p/2766727.html
Copyright © 2011-2022 走看看