├── META-INF └── com │ └── google │ └── android │ ├── update-binary │ └── updater-script ├── README.md ├── customize.sh ├── module.prop ├── post-fs-data.sh ├── post-fs-data.zip ├── sepolicy.rule ├── service.sh ├── system.prop ├── system ├── etc │ └── security │ │ └── cacerts │ │ └── 79dfd686.0 └── placeholder └── uninstall.sh /META-INF/com/google/android/update-binary: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | 3 | #################################################### 4 | # 5 | # Magisk 模块安装脚本模板 6 | # by topjohnwu 7 | # 20.3+版本适配汉化: Pinkdoge 8 | # 9 | ##################################################### 10 | 11 | umask 022 12 | 13 | # 全局变量 14 | TMPDIR=/dev/tmp 15 | PERSISTDIR=/sbin/.magisk/mirror/persist 16 | 17 | rm -rf $TMPDIR 2>/dev/null 18 | mkdir -p $TMPDIR 19 | 20 | # 在加载 util_functions 前 echo 21 | ui_print() { echo "$1"; } 22 | 23 | require_new_magisk() { 24 | ui_print "*******************************" 25 | ui_print " 请安装 Magisk v20.3+! " 26 | ui_print "*******************************" 27 | exit 1 28 | } 29 | 30 | is_legacy_script() { 31 | unzip -l "$ZIPFILE" install.sh | grep -q install.sh 32 | return $? 33 | } 34 | 35 | print_modname() { 36 | local len 37 | len=`echo -n $MODNAME | wc -c` 38 | len=$((len + 2)) 39 | local pounds=`printf "%${len}s" | tr ' ' '*'` 40 | ui_print "$pounds" 41 | ui_print " $MODNAME " 42 | ui_print "$pounds" 43 | ui_print "******************************" 44 | ui_print " 由 Magisk 提供技术支持(在安装模块时打印作者信息) " 45 | ui_print "******************************" 46 | } 47 | 48 | ############## 49 | # 环境设置 50 | ############## 51 | 52 | OUTFD=$2 53 | ZIPFILE=$3 54 | 55 | mount /data 2>/dev/null 56 | 57 | # 加载公用函数 58 | [ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk 59 | . /data/adb/magisk/util_functions.sh 60 | [ $MAGISK_VER_CODE -gt 18100 ] || require_new_magisk 61 | 62 | # 准备卡刷 zip 包 63 | setup_flashable 64 | 65 | # 挂载分区 66 | mount_partitions 67 | 68 | # 检测版本和架构 69 | api_level_arch_detect 70 | 71 | # 安装 busybox 和二进制文件 72 | $BOOTMODE && boot_actions || recovery_actions 73 | 74 | ############## 75 | # 准备 76 | ############## 77 | 78 | # 提取公共文件 79 | unzip -o "$ZIPFILE" module.prop -d $TMPDIR >&2 80 | [ ! -f $TMPDIR/module.prop ] && abort "! 从 zip 中提取文件失败!" 81 | 82 | $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules 83 | MODULEROOT=$NVBASE/$MODDIRNAME 84 | MODID=`grep_prop id $TMPDIR/module.prop` 85 | MODPATH=$MODULEROOT/$MODID 86 | MODNAME=`grep_prop name $TMPDIR/module.prop` 87 | 88 | # 创建模块路径 89 | rm -rf $MODPATH 2>/dev/null 90 | mkdir -p $MODPATH 91 | 92 | ########## 93 | # 安装 94 | ########## 95 | 96 | if is_legacy_script; then 97 | unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 98 | 99 | # 加载安装脚本 100 | . $TMPDIR/install.sh 101 | 102 | # 打印模块名称 103 | print_modname 104 | on_install 105 | 106 | # 加载自定义卸载脚本 107 | [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh 108 | 109 | # 取消挂载 110 | $SKIPMOUNT && touch $MODPATH/skip_mount 111 | 112 | # prop 文件 113 | $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop 114 | 115 | # 模块信息 116 | cp -af $TMPDIR/module.prop $MODPATH/module.prop 117 | 118 | # post-fs-data 模式脚本 119 | $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh 120 | 121 | # service 模式脚本 122 | $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh 123 | 124 | ui_print "- 正在设置权限" 125 | set_permissions 126 | else 127 | print_modname 128 | 129 | unzip -o "$ZIPFILE" customize.sh -d $MODPATH >&2 130 | 131 | if ! grep -q '^SKIPUNZIP=1$' $MODPATH/customize.sh 2>/dev/null; then 132 | ui_print "- 正在提取模块文件" 133 | unzip -o "$ZIPFILE" -x 'META-INF/*' -d $MODPATH >&2 134 | 135 | # 默认权限 136 | set_perm_recursive $MODPATH 0 0 0755 0644 137 | fi 138 | 139 | # 加载 customization 脚本 140 | [ -f $MODPATH/customize.sh ] && . $MODPATH/customize.sh 141 | fi 142 | 143 | # 处理 replace 文件夹 144 | for TARGET in $REPLACE; do 145 | ui_print "- 正在删除目标文件: $TARGET" 146 | mktouch $MODPATH$TARGET/.replace 147 | done 148 | 149 | if $BOOTMODE; then 150 | # Update info for Magisk Manager 151 | mktouch $NVBASE/modules/$MODID/update 152 | cp -af $MODPATH/module.prop $NVBASE/modules/$MODID/module.prop 153 | fi 154 | 155 | # 安装自定义 sepolicy 补丁 156 | if [ -f $MODPATH/sepolicy.rule -a -e $PERSISTDIR ]; then 157 | ui_print "- 安装自定义 sepolicy 补丁" 158 | PERSISTMOD=$PERSISTDIR/magisk/$MODID 159 | mkdir -p $PERSISTMOD 160 | cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule 161 | fi 162 | 163 | # 删除 placeholder 文件 164 | rm -rf \ 165 | $MODPATH/system/placeholder $MODPATH/customize.sh \ 166 | $MODPATH/README.md $MODPATH/.git* 2>/dev/null 167 | 168 | ############## 169 | # 结束 170 | ############## 171 | 172 | cd / 173 | $BOOTMODE || recovery_cleanup 174 | rm -rf $TMPDIR 175 | 176 | ui_print "- 完成" 177 | exit 0 -------------------------------------------------------------------------------- /META-INF/com/google/android/updater-script: -------------------------------------------------------------------------------- 1 | #MAGISK 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ![bc5c7a34fee614e08839b511a5840873.jpg](https://i.loli.net/2020/01/30/fOFvI2o9KXqEkJr.jpg) 4 | 5 | # 简介 6 | 由于使用adb root无法挂载/system,这也是因为Android系统不是debug模式 7 | 8 | 这就利用到了Magisk的机制进行实现写入 9 | 10 | # 使用流程 11 | `简单粗暴,直接下载本项目(每个Charles的证书文件不一样,请将项目自带的删除替换),将charles的证书文件塞入system/etc/security/cacerts` 12 | 13 | **这是通过 [Magisk模板](https://github.com/Pinkdoge/magisk-module-template) 进行的修改** 14 | 15 | # Magisk Module 模板 16 | 17 | `这是Magisk模块最基础的结构` 18 | ``` 19 | module.zip 20 | │ 21 | ├── META-INF 22 | │ └── com 23 | │ └── google 24 | │ └── android 25 | │ ├── update-binary <--- 这个文件你可以通过下载 module_installer.sh 得到 26 | │ └── updater-script <--- 这个文件应仅包含字符串 "#MAGISK" 27 | │ 28 | ├── customize.sh <--- 这个文件包含 "SKIPUNZIP=0" 如需更改权限 请把0改为1 29 | │ 这个文件由 update-binary 执行(sourced) 30 | ├── module.prop 31 | ├── ... /* 模块文件的其余部分 */ 32 | | 33 | ``` 34 | **这意味着除了以上重要文件 其他的文件如果您不需要的话 可以删掉** 35 | 36 | **这是 [Magisk 官方新模块模板](https://github.com/HANA-CI-Build-Project/magisk-module-template) 您也可以去看看** 37 | 38 | **[Magisk 面具新版模板模块制作教程](https://www.coolapk.com/feed/16056941?shareKey=YWI0MDFiYWE1Y2E3NWUyYzA3ODc~&shareUid=1124169&shareFrom=com.coolapk.market_10.0.1) 感谢@碎念** 39 | 40 | 有关模块和存储库的更多信息 请查看 [Magisk 官方文档](https://topjohnwu.github.io/Magisk/guides.html) 41 | -------------------------------------------------------------------------------- /customize.sh: -------------------------------------------------------------------------------- 1 | # 注意 这不是占位符!!这个代码的作用是将模块里的东西全部塞系统里,然后挂上默认权限 2 | SKIPUNZIP=0 -------------------------------------------------------------------------------- /module.prop: -------------------------------------------------------------------------------- 1 | # id 只能填 字母 数字 半角符号 2 | id=Charles-SSL-Write 3 | name=Charles证书系统 4 | version=v1 5 | versionCode=1 6 | author=Pinkdoge 7 | description=Charles证书系统 -------------------------------------------------------------------------------- /post-fs-data.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | # 请不要硬编码 /magisk/modname/... ; 请使用 $MODDIR/... 3 | # 这将使你的脚本更加兼容,即使Magisk在未来改变了它的挂载点 4 | MODDIR=${0%/*} 5 | 6 | # 这个脚本将以 post-fs-data 模式执行 7 | # 更多信息请访问 Magisk 主题 8 | -------------------------------------------------------------------------------- /post-fs-data.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cih1996/write-charles-ssl/a26dfdb13a1141a301562acd158e41b0d544685a/post-fs-data.zip -------------------------------------------------------------------------------- /sepolicy.rule: -------------------------------------------------------------------------------- 1 | # 如果您的模块需要一些额外的sepolicy修补程序,请将这些规则添加到此文件中 -------------------------------------------------------------------------------- /service.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | # 请不要硬编码 /magisk/modname/... ; 请使用 $MODDIR/... 3 | # 这将使你的脚本更加兼容,即使Magisk在未来改变了它的挂载点 4 | MODDIR=${0%/*} 5 | 6 | # 这个脚本将以 late_start service 模式执行 7 | # 更多信息请访问 Magisk 主题 8 | -------------------------------------------------------------------------------- /system.prop: -------------------------------------------------------------------------------- 1 | # 这个文件将被 resetprop 读取 2 | # 示例: 改变 dpi 3 | # ro.sf.lcd_density=320 4 | -------------------------------------------------------------------------------- /system/etc/security/cacerts/79dfd686.0: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFSDCCBDCgAwIBAgIGAYi1TqYAMA0GCSqGSIb3DQEBCwUAMIGnMTgwNgYDVQQDDC9DaGFybGVz 3 | IFByb3h5IENBICgxMyBKdW4gMjAyMywgREVTS1RPUC1SUjRJSzRJKTElMCMGA1UECwwcaHR0cHM6 4 | Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8GA1UECgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2ts 5 | YW5kMREwDwYDVQQIDAhBdWNrbGFuZDELMAkGA1UEBhMCTlowIBcNMDAwMTAxMDAwMDAwWhgPMjA1 6 | MjA4MDkxNTEwMTBaMIGnMTgwNgYDVQQDDC9DaGFybGVzIFByb3h5IENBICgxMyBKdW4gMjAyMywg 7 | REVTS1RPUC1SUjRJSzRJKTElMCMGA1UECwwcaHR0cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDER 8 | MA8GA1UECgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2tsYW5kMREwDwYDVQQIDAhBdWNrbGFuZDEL 9 | MAkGA1UEBhMCTlowggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW6/hiRMNv0SIlyKUt 10 | qQUpVaLJqH6Hd2KHw7TqVTOt1wUumnqp7EMNDOmy8AyBcwqHJ0/rZWdcaYbXZvpHmx0pq1xIwpF3 11 | nR3wWYv1+eI6jKyE9EGaht0tHIPbJKWKnJ0HhFH88Ni9WhCwcc5rspa+uoYykuMUBjSvPAyYVorR 12 | eG6KpgsUdMGBm1Zov64QF2fsHFhQ6bbULalIp0hpHQpraS4U8OE+vCP9s+pDPU6C5edDCm4nnIB2 13 | j9O1H1ap/W8EwzM2ALPDDkPZG13kcdAfiETJL/bUQTqk3fKjpcgdrd4Lt1iNw8vGupU7GMsbKmSp 14 | H4xbSItFFYfZsDOwsK4JAgMBAAGjggF0MIIBcDAPBgNVHRMBAf8EBTADAQH/MIIBLAYJYIZIAYb4 15 | QgENBIIBHROCARlUaGlzIFJvb3QgY2VydGlmaWNhdGUgd2FzIGdlbmVyYXRlZCBieSBDaGFybGVz 16 | IFByb3h5IGZvciBTU0wgUHJveHlpbmcuIElmIHRoaXMgY2VydGlmaWNhdGUgaXMgcGFydCBvZiBh 17 | IGNlcnRpZmljYXRlIGNoYWluLCB0aGlzIG1lYW5zIHRoYXQgeW91J3JlIGJyb3dzaW5nIHRocm91 18 | Z2ggQ2hhcmxlcyBQcm94eSB3aXRoIFNTTCBQcm94eWluZyBlbmFibGVkIGZvciB0aGlzIHdlYnNp 19 | dGUuIFBsZWFzZSBzZWUgaHR0cDovL2NoYXJsZXNwcm94eS5jb20vc3NsIGZvciBtb3JlIGluZm9y 20 | bWF0aW9uLjAOBgNVHQ8BAf8EBAMCAgQwHQYDVR0OBBYEFNoGlw9cBlpVQ6Sn0pvnh8WWllm8MA0G 21 | CSqGSIb3DQEBCwUAA4IBAQA0e2HitCPEZEN2ZXldrnNd0SM52elNLLiFNTgC9bjbVtnTBM81pmGl 22 | rrK14sxRuTFiH4zPx60/DiP3Jvb94VsMgU0diipBVMHHV7uCTQ89DO6CnpSeTEu3Yny7ASI8i+ST 23 | uz9TCqkcsZM7S+d6H/ZUuhzeb59NlDpdNRtCvj0HKBoN1X3Il+2PBL0ITylhevFdafeN5fcFpvb9 24 | wE01yv4tfypSf28EYdIK5FYcsHTCzqIDkcNNXWDl56Uto2vSjLyW8Up2uBknNkcXvFVkA40Uy7Jc 25 | iSaTIEJe/ltnOs155eQNpo8Kuvecj31uOv9nLvbDweJoymFpiDEag4jx6axg 26 | -----END CERTIFICATE----- 27 | -------------------------------------------------------------------------------- /system/placeholder: -------------------------------------------------------------------------------- 1 | 这个文件将被 Magisk Manager 删除, 这只是个对 git 使用的占位符 2 | -------------------------------------------------------------------------------- /uninstall.sh: -------------------------------------------------------------------------------- 1 | # 这个脚本会在删除模块的时候执行 --------------------------------------------------------------------------------