• android逆向面试题


    1.dex整体加固的脱壳方法

    dex加固算是第二代主流加固工,下面是常见脱壳方案。
    1.app运行后,直接在app内存中暴力搜索 dex\n035,然后进行dump数据。
    2.dvmDexFileOpenPartial通过hook这个函数解密。

    2.ptrace注入流程

    主要就是通过利用系统ptrace函数进行实现的,目前主流的frida注入框架也是这个原理实现的。
    1.attach到远程进程;
    2.保存寄存器环境
    3.远程调用mmap函数分配内存空间
    4.想远程进程写入加载模块名称和调用函数
    5.通过dlopne打开注入模块
    6.dlsym获取调用函数地址
    7.远程调用注入模块的函数
    8.恢复寄存器
    9.剥离远程进程

    3.zygote注入流程

    zygote注入的代表产品就是xposed注入框架。
    zygote注入主要就是通过修改对应的可执行文件其实就是app_process这个文件,然后实现全局注入
    1.把自己实现要进行注入的so库拷贝到/system/lib/下面
    2.把这个so库的文件名追加到/system/etc/public.libraries.txt里

    4.inline hook实现原理

    主要原理:通过修改函数头修改成jmp指令,跳转到进行自定义实现的函数,自定义函数就是自己想执行的逻辑,执行完自己的逻辑再跳转回来到跳转前的原函数。

    5.frida的hook原理

    frida 注入是基于 ptrace实现的。frida 调用ptrace向目标进程注入了一个frida-agent-xx.so文件。后续各种hook操作是这个so文件跟frida-server通讯实现的。

    6.xposed注入原理

    安卓所有的APP进程是用 Zygote(孵化器)进程进行fork创建并启动的。
    Xposed替换了 Zygote 进程对应的可执行文件/system/bin/app_process,每启动一个新的进程,都会先启动xposed替换过的文件,都会加载xposed相关代码。

  • 相关阅读:
    spoj 3273 Treap
    hdu1074 Doing Homework
    hdu1024 Max Sum Plus Plus
    hdu1081 To the Max
    hdu1016 Prime Ring Problem
    hdu4727 The Number Off of FFF
    【判断二分图】C. Catch
    【01染色法判断二分匹配+匈牙利算法求最大匹配】HDU The Accomodation of Students
    【数轴涂色+并查集路径压缩+加速】C. String Reconstruction
    【数轴染色+并查集路径压缩+加速】数轴染色
  • 原文地址:https://www.cnblogs.com/gqv2009/p/16276710.html
Copyright © 2020-2023  润新知