https://github.com/liaoguobao/TweakMe
TweakMe是一个轻量级的逆向开发框架,它与传统的xposed、frida、magisk等框架相比的最大优势是无需root环境,对手机系统的要求很低,只需要一个正常手机即可对app进行逆向分析。简单的几步操作就可以完成对指定app的进程注入(Native层与Java层),可以绕过大多数加固(
360
、梆梆、爱加密等)的签名证书校验。完成注入后通过Java编写hook代码,一键脚本编译为dex插件。目前TweakMe框架在
5.0
到
11.0
的android手机上测试通过(
12.0
由于无对应手机,没有测试)。由于篇幅问题,本文档并不介绍TweakMe的实现原理,仅仅介绍如何快速使用它,以及使用过程中的注意事项。
如果有任何使用上的问题,可以在后面留言,我会尽量及时回复,或者加入TweakMeQQ讨论群
325509091
TweakMe地址如下:
TweakMe是一个轻量级的逆向开发框架,它与传统的xposed、frida、magisk等框架相比的最大优势是无需root环境,对手机系统的要求很低,只需要一个正常手机即可对app进行逆向分析。简单的几步操作就可以完成对指定app的进程注入(Native层与Java层),可以绕过大多数加固(
360
、梆梆、爱加密等)的签名证书校验。完成注入后通过Java编写hook代码,一键脚本编译为dex插件。目前TweakMe框架在
5.0
到
11.0
的android手机上测试通过(
12.0
由于无对应手机,没有测试)。由于篇幅问题,本文档并不介绍TweakMe的实现原理,仅仅介绍如何快速使用它,以及使用过程中的注意事项。
如果有任何使用上的问题,可以在后面留言,我会尽量及时回复,或者加入TweakMeQQ讨论群
325509091
TweakMe地址如下:
一、使用前准备:
1
、一台没有ROOT过的正常Android手机,系统版本
11
及以下都可。
2
、开发电脑需要安装AndroidStudio,Java版本最好是
1.7
或
1.8
。
3
、一个待测试的apk【demo.apk】,假设包名为【com.example.tweakme】。
二、将TweakMe拉取到本地,目录结构类似如下图
一、使用前准备:
1
、一台没有ROOT过的正常Android手机,系统版本
11
及以下都可。
2
、开发电脑需要安装AndroidStudio,Java版本最好是
1.7
或
1.8
。
3
、一个待测试的apk【demo.apk】,假设包名为【com.example.tweakme】。
二、将TweakMe拉取到本地,目录结构类似如下图
Apktweak目中附带了一个apktweak.exe的命令行工具,后续步骤会经常用到。
三、重打包apk
重打包的目的是让APP在启动时主动加载我们的TweakMe
/
libs
/
armeabi
/
libsotweak.so。
所以我们要在app中放入我们自己的so,并微调某个so,让它把我们的so加载起来。
重打包命令:apktweak
-
-
apk xxx.apk
-
-
target xxx.so
-
-
target参数指定app中待微调的so,不同app设置可能会不一样,但总体原则是:
指定为app在启动时第一个加载的应用层so。
目前大多数的app都有加壳,所以这里的
-
-
target其实就是壳的so。
对于梆梆加固是libDexHelper.so,对于爱加密是libexec.so,对于
360
加固是libjiagu.so。
需要注意的是,对于爱加密、
360
加固等壳的so并不在通常的lib
/
abi目录下,而在assets目录中,所以
-
-
target 参数必须要
指定绝对路径,只有在通常的lib
/
abi目录下时才可以只写so名称。可供参考的命令如下:
apktweak
-
-
apk xxx.apk
-
-
target libDexHelper.so
apktweak
-
-
apk xxx.apk
-
-
target assets
/
ijm_lib
/
armeabi
/
libexec.so
apktweak
-
-
apk xxx.apk
-
-
target assets
/
libjiagu.so
如果打包成功,则会在apk当前目录中生成一个重签名的新apk包,如下图所示
apk名称带sign的为重签名apk,另一个为原始apk
Apktweak目中附带了一个apktweak.exe的命令行工具,后续步骤会经常用到。
三、重打包apk
重打包的目的是让APP在启动时主动加载我们的TweakMe
/
libs
/
armeabi
/
libsotweak.so。
所以我们要在app中放入我们自己的so,并微调某个so,让它把我们的so加载起来。
重打包命令:apktweak
-
-
apk xxx.apk
-
-
target xxx.so
-
-
target参数指定app中待微调的so,不同app设置可能会不一样,但总体原则是:
指定为app在启动时第一个加载的应用层so。
目前大多数的app都有加壳,所以这里的
-
-
target其实就是壳的so。
对于梆梆加固是libDexHelper.so,对于爱加密是libexec.so,对于
360
加固是libjiagu.so。
需要注意的是,对于爱加密、
360
加固等壳的so并不在通常的lib
/
abi目录下,而在assets目录中,所以
-
-
target 参数必须要
指定绝对路径,只有在通常的lib
/
abi目录下时才可以只写so名称。可供参考的命令如下:
apktweak
-
-
apk xxx.apk
-
-
target libDexHelper.so
apktweak
-
-
apk xxx.apk
-
-
target assets
/
ijm_lib
/
armeabi
/
libexec.so
apktweak
-
-
apk xxx.apk
-
-
target assets
/
libjiagu.so
如果打包成功,则会在apk当前目录中生成一个重签名的新apk包,如下图所示
apk名称带sign的为重签名apk,另一个为原始apk
四、获取原apk证书签名数据
重签名的包,最大的改变是签名证书和原来不一样了,加固壳在启动过程中肯定会检查apk包是否被篡改,那时签名证书校验就会报错直接闪退。所以,我们需要获取到原apk证书签名数据,在dex插件中适当时机再重新设置回去。
打印apk签名证书命令:apktweak
-
-
apk xxx.apk
-
-
cert
命令执行后会在控制台打印出签名证书数据(Base64编码),如下图
四、获取原apk证书签名数据
重签名的包,最大的改变是签名证书和原来不一样了,加固壳在启动过程中肯定会检查apk包是否被篡改,那时签名证书校验就会报错直接闪退。所以,我们需要获取到原apk证书签名数据,在dex插件中适当时机再重新设置回去。
打印apk签名证书命令:apktweak
-
-
apk xxx.apk
-
-
cert
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2022-6-24 17:01
被liaoguobao编辑
,原因: