前言

网上流传的mprop修改ro.debuggable的下载程序,我这失效。

搜索一番无意在一帖回复发现源码,在此感谢。

文件下载

本人编译的mprop以在夜神7.12测试通过,如不能成功,请自行编译。

百度网盘链接: https://pan.baidu.com/s/12wUM3Y8Usrv7DCQCQmRsng 提取码: 0s72

执行mprop

将文件上传到adnroid (root) 放入/data/local/tmp

 {mprop} 替换为自己  mprop 文件的路径# adb push {mprop} /data/local/tmp# adb shell# cd /data/local/tmp# ./mprop ro.debuggable 1

#输出

WARNING: linker: /data/local/tmp/mprop3: unsupported flags DT_FLAGS_1=0x8000001
start hacking …
target mapped area: 0x8048000-0x81b0000
patching at: 0x8178eb8 [0x2e6f72 -> 0x002e6f73]
patched! reread: [0x8178eb8] => 0x002e6f73
– setprop: [ro.debuggable] = [1]
++ getprop: [ro.debuggable] = [1]

 查询结果# getprop ro.debuggable1 输出为1 表示成

源码

以下源码有需要自行编译:

/*** Copyright (C) 2018 netsniffer* mprop v1.0, 2017/01/19* https://bbs.pediy.com/thread-215311.htm*/#include <unistd.h>
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
#include <memory.h>
#include <string.h>
#include <sys/ptrace.h>
#include <sys/system_properties.h>#define PROP_NAME_MAX   32
#define PROP_VALUE_MAX  92static void dump_hex(const char* buf, int len)
{const uint8_t *data = (const uint8_t*)buf;int i;char ascii_buf[17];ascii_buf[16] = '\0';for (i = 0; i < len; i++) {int val = data[i];int off = i % 16;if (off == 0)printf("%08x  ", i);printf("%02x ", val);ascii_buf[off] = isprint(val) ? val : '.';if (off == 15)printf(" %-16s\n", ascii_buf);}i %= 16;if (i) {ascii_buf[i] = '\0';while (i++ < 16)printf("   ");printf(" %-16s\n", ascii_buf);}
}#define ORI_INST  0x2e6f72
#define HACK_INST 0x2e6f73int main(int argc, char **argv)
{FILE *fp;int  m, rc;int  patch_count;unsigned long maps, mape, addr, mlen;unsigned long real_val, real_vaddr;char perms[5];char line[512];char *buffer, *ro;char* name = NULL, *value = NULL;uint32_t tmp;uint32_t dest_inst = ORI_INST;uint32_t mod_inst = HACK_INST;int restore = 0, verbose = 0;for (m = 1; m < argc; m++) {if (argv[m] == NULL)continue;if (argv[m][0] != '-') {break;} if (argv[m][1] == 'r') {restore = 1;dest_inst = HACK_INST;mod_inst = ORI_INST;} else if (argv[m][1] == 'v') {verbose = 1;}}if (restore) {fprintf(stderr, "restore ...\n"); }else {if (argc - m >= 2) {// fprintf(stderr, "Usage: %s [-r] [-v] [prop_name] [prop_value]\n"//                 "e.g.:  %s ro.debuggable 1\n", argv[0], argv[0]);name = argv[m];value = argv[m+1];} fprintf(stderr, "start hacking ...\n"); }fp = fopen("/proc/1/maps", "r");if (!fp) {perror("!! fopen ");return 1;}// 00008000-000cb000 r-xp 00000000 00:01 6999       /initmemset(line, 0, sizeof(line));while (fgets(line, sizeof(line), fp)) {int main_exe = (strstr(line, "/init") != NULL) ? 1 : 0;if (main_exe) {rc = sscanf(line, "%lx-%lx %4s ", &maps, &mape, perms);if (rc < 3) {perror("!! sscanf ");return 1;}if (perms[0] == 'r' && perms[1] == '-' && perms[2] == 'x' && perms[3] == 'p') {break;    }}}fclose(fp);fprintf(stderr, "target mapped area: 0x%lx-0x%lx\n", maps, mape); mlen = mape - maps;buffer = (char *) calloc(1, mlen + 16);if (!buffer) {perror("!! malloc ");return 1;}rc = ptrace(PTRACE_ATTACH, 1, 0, 0);if (rc < 0) {perror("!! ptrace ");return rc;}for (addr = maps; addr < mape; addr += 4) {tmp = ptrace(PTRACE_PEEKTEXT, 1, (void *) addr, 0);*((uint32_t*)(buffer + addr - maps)) = tmp;}if (verbose) {dump_hex(buffer, mlen);}for (m = 0; m < mlen; ++m) {if (dest_inst == *(uint32_t*)(buffer+m)) { // 72 6F 2E 00  == ro.\0break;}}if (m >= mlen) {fprintf(stderr, ">> inject position not found, may be already patched!\n");} else {real_vaddr = maps + m;real_val = *(uint32_t*)(buffer+m);fprintf(stderr, ">> patching at: 0x%lx [0x%lx -> 0x%08x]\n", real_vaddr, real_val, mod_inst);tmp = mod_inst;rc = ptrace(PTRACE_POKETEXT, 1, (void *)real_vaddr, (void*)tmp);if (rc < 0) {perror("!! patching failed ");}tmp = ptrace(PTRACE_PEEKTEXT, 1, (void *)real_vaddr, 0);fprintf(stderr, ">> %s reread: [0x%lx] => 0x%08x\n", restore ? "restored!" : "patched!", real_vaddr, tmp);       }free(buffer);rc = ptrace(PTRACE_DETACH, 1, 0, 0);if (!restore && (name && value && name[0] != 0)) {char propbuf[PROP_VALUE_MAX];fprintf(stderr, "-- setprop: [%s] = [%s]\n", name, value);__system_property_set(name, value);usleep(400000);__system_property_get(name, propbuf);fprintf(stderr, "++ getprop: [%s] = [%s]\n", name, propbuf);}return rc;}

夜神模拟器 android mprop 开启 ro.debuggable相关推荐

  1. android进程调试(ro.debuggable=1或android:debuggable=true)----JDWP线程

    ro.debuggable=1或android:debuggable="true" VM process JDWP thread -– adbd(JDWP service) --- ...

  2. 夜神模拟器android 7.1.2 x86_64安装xposed框架

    一.环境准备 夜神模拟器(64位) x86_64 xposed https://forum.xda-developers.com/attachments/xposed-v89-sdk25-x86_64 ...

  3. python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)

    0.前言 看了很多自动化测试入门的课程,还是B站白月黑羽讲的最详细 从环境搭建到常用功能,讲的都比较详细 由于没什么项目实践,就简单写了一个什么值得买APP自动签到脚本 后期打算买个树莓派,把整个环境 ...

  4. 【Android 逆向】Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )

    文章目录 一.adb 降权 1.ro.secure 属性 2.ro.debuggable 属性 3.service.adb.root 属性 4.ro.kernel.qemu 属性 一.adb 降权 远 ...

  5. android studio在夜神上打开_Android Studio之使用连接夜神模拟器分析Smail 【详文】8.7日更正...

    本帖最后由 Jxdm 于 2018-8-7 09:31 编辑 前言: 想把一个APP去广告,结果发现修改关键代码后出现崩溃,于是就想到了动态调试.由于是第一次使用,百度了N个网页,然后慢慢摸索才知道是 ...

  6. Android【1】:一文教你使用Camille+夜神模拟器实现安卓应用隐私合规辅助检测

    碎碎念: 不好意思最近课业上比较繁忙,一直忙于一些测试,没有按时来填坑.今天带来的是基于课程项目要求,需要完成的安卓应用行为检测Demo. 因为环境的配置花费了一些时间,做一个简单的记录,方便后续进行 ...

  7. Android --- 在Andoird应用程序中打开相册却没有图片(夜神模拟器)怎么办?

    问题描述: 当我们将Android应用程序放到手机上测试的时候,Android应用程序可以开启相册功能并获取相册中的图片,但是当我们将Andoird应用程序放到夜神模拟器上运行,开启相册选择图片发现里 ...

  8. android 加固崩溃,360加固后,夜神模拟器安装崩溃

    文献参考 夜神模拟器CPU架构 夜神模拟器采用的架构.png 说明夜神采用的架构是X86的架构,X86支持也同时支持 armeabi armeabi-v7a,但是并不保证说100%不会发生崩溃的现象, ...

  9. android studio 使用夜神模拟器

    夜神模拟器的官网(http://www.yeshen.com/) 之前一直都在使用Genymotion的虚拟机,但会出现很多问题,而且配置比较麻烦,当你使用夜神模拟器的时候,你就会爱上它的. 首先,要 ...

最新文章

  1. 深入理解MySQL的外连接、内连接、交叉连接
  2. 聊一聊声明式接口调用与Nacos的结合使用
  3. ERP物理机迁移至阿里云实践
  4. GenseeSDK DocView(OpenGL)引起的TextView显示黑块
  5. HDU2022 海选女主角【最值】
  6. DLUTOJ #1394 Magic Questions
  7. CSDN博客 不登录不能复制粘贴
  8. Querydsl使用fetchCount()报错
  9. 蛋白互作常用的研究方法
  10. c语言星空特效源代码,星空 - 网页特效代码|网页特效观止 - 让你的网页靓起来!...
  11. iphone如何显示实时网速和内存空间
  12. no input file specified解决方法
  13. OCAD应用:双高斯照相物镜系统结构优化设计
  14. vue如何获取并操作DOM元素
  15. 一名普通cs本科生的自述—【大学到底怎么过才值?】
  16. java的nullpoint_java.lang.NullPointerException
  17. 实战一:爬取拉勾网职位信息
  18. 红帽子服务器虚拟化技术只要是,红帽子企业版.Linux.5
  19. Unity3D NGUI分离RGBA通道
  20. Profibus网络故障诊断技术总结

热门文章

  1. Android WebView简要介绍和学习计划
  2. Doom流量回放工具导致的测试环境服务接口无响应的排查过程
  3. ODCC2017 浪潮展示多款JDM创新成果
  4. [52PJ] Java面向对象笔记(转自52 1510988116)
  5. 关于取地址运算符以及指针的问题
  6. Python 之父出生 | 历史上的今天
  7. NeurIPS 2020 | 基于协同集成与分发的协同显著性目标检测网络
  8. 华为云区块链的跨云联通能力构建
  9. Unity:计算两个物体(没有父子关系)的相对坐标
  10. bat 批处理 小工具