zoukankan      html  css  js  c++  java
  • 【移动安全基础篇】——31、Android动态代码自修改原理

    1. classes.dex
    DexClassDef -> DexClassData -> DexMethod -> DexCode

    里面的 u2 insns 的值便是用于存放程序实现代码的地方。
    程序执行时候会把整个 dex 文件加载到内存中,然后动态地解析执行 insns 中的内容。
    只要修改了里面的数据,就相当于修改了程序执行流程和方法。
    2.  内存中修改 insns
    1)  定位到 dex 文件
    2)  计算函数的 DexCode 位置
    3)  重写 DexCode 的 insns 数据

    原始程序返回结果 1
    找到 classes.dex 文件中 ret1()的位置

    就是将 1210 改为 1220

    3. ida  中动态修改
    Ctrl + S 打开 map 数据
    查找内存加载的 classes.dex 的位置
    直接计算偏移,修改相应的位置

    修改生效

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    IO库 8.5
    IO库 8.4
    标准模板库——IO库
    IO库 8.3
    IO库 8.2
    IO库 8.1
    CF 599D Spongebob and Squares(数学)
    Django入门学习(一)
    hdu 5733
    uva 11210
  • 原文地址:https://www.cnblogs.com/devi1/p/13486415.html
Copyright © 2011-2022 走看看