zoukankan      html  css  js  c++  java
  • 0day2安全——笔记1

    第一章

    PE和内存之间的映射

    节偏移

    文件偏移地址(File Offset Address):数据在PE文件中的地址

    装载地址(Image Base):PE装入内存的基地址

    虚拟内存地址(Virtual Address,VA):PE文件中的指令被装入内存后的地址

    相对虚拟地址(Relative Virtual Address,RVA):相对虚拟地址是虚拟内存地址相对于映射基址(装载地址)的偏移量

    关系:

    VA = Image Base + RVA

    节偏移=文件虚拟地址偏移量-文件物理地址偏移量

    文件偏移地址=虚拟内存地址-装载基址-节偏移

    例:虚拟内存地址为0x4010D4,文件虚拟地址偏移量为1000h,文件物理地址偏移量为200h

     文件偏移地址=0x4010D4-0x400000(1000h-200h)=0x2D4  (注意十六进程的换算)

    分析和破解win32控制台程序

    环境如下

    系统:windows7 x64虚拟机

    软件:IDA Pro、UltraEdit

    编译器:vc++6.0

    注意:尽量不用vs或其他IDE,否则反编译时出现的伪代码不同,有些IDE编译会加入IDE的一些代码提高软件安全性等(笔者使用了vs2017,反编译出来没有main函数)

    代码:

    #include <stdio.h>
    #include <string.h>
    #define PASSWORD "123456"
    
    
    int verfity(char *password) {
        int i;
        i = strcmp(password, PASSWORD);
        return i;
    
    
    }
    
    int main() {
    
        char password[1024];
        int i;
        printf("please input pwd:
    ");
        while (1) {
            scanf("%s",password);
    
            i = verfity(password);
            if (i){
                printf("fail!please input pwd:
    ");
            }
            else{
                printf("success
    ");
                break;
                
            }
        }
        return 0;
    
    }

    载入IDA,这里选择第一个(进行PE分析)

    进入main函数,按F12查看函数的流程图

    经过分析后我们发现破解的关键点在于怎么跳过验证(两个字符串对比)

    我们可以从字符串对比的判断JZ(为零则跳)作为切入点

    按空格键进入汇编代码,找到JZ的虚拟地址004010D4

     

    根据前面虚拟内存计算的例子,可以得出文件偏移地址是0x2D4

    打开UltraEdit,进入0x2D4的位置,把74(机器指令JZ)修改为75(机器指令JNZ)

    保存程序,破解完成!

    关于机器指令和汇编指令可以参考: https://blog.csdn.net/ida0918/article/details/52655615

  • 相关阅读:
    常用的16个Java实用工具类,Java开发人员请收藏!
    JVM内存区域与垃圾回收
    听说你还不知道Java代码是怎么运行的?
    Java 到底是值传递还是引用传递?
    Java线程池实现原理及其在美团业务中的实践
    别再说Java对象都是在堆内存上分配空间的了!
    面试常问的Java虚拟机内存模型,看这篇就够了!
    好用的Java工具类库,GitHub星标10k+你在用吗?
    MySQL 全文索引实现一个简单版搜索引擎
    laravel 数据库里的图片重命名
  • 原文地址:https://www.cnblogs.com/luocodes/p/11863368.html
Copyright © 2011-2022 走看看