修改V2rayNG的字符串过检测

修改V2rayNG的字符串过检测

目前国产Android手机都有各类App检测,会报警甚至拦截“黑名单”上的应用。然而这个系统目前非常原始,只通过包名判断。因此做点小修改就可以绕过去。考虑V2rayNG的编译并不容易,而Github上的APK也没有加壳,可以直接对成品APK进行patch。

下面修改这些比较明显的特征:

  • 包名
  • 部分类名
  • icon和应用显示名
  • 服务名 同时改服务类名和libgojni.so里面的jni函数名会报No implementation found,即使名称都是Java_libakash_Libakash__1init,暂不清楚原因

改包名

<manifest>里面的package,直接改

部分类名

首先确定jni部分的函数名,涉及到的部分先不动,比如

1
2
3
4
5
6
7
8
9
readelf -W -s libgojni.so  | grep Java
    62: 0000000000fa6be4    32 FUNC    GLOBAL DEFAULT   14 Java_libv2ray_ProtectedDialer_isVServerReady
    64: 0000000000fa6c48    40 FUNC    GLOBAL DEFAULT   14 Java_libv2ray_V2RayPoint__1_1NewV2RayPoint
    69: 0000000000fa7000    80 FUNC    GLOBAL DEFAULT   14 Java_libv2ray_Libv2ray_00024proxyV2RayVPNServiceSupportsSet_onEmitStatus
    71: 0000000000fa90a4   124 FUNC    GLOBAL DEFAULT   14 Java_go_Seq_setContext
    81: 0000000000fa6e24    68 FUNC    GLOBAL DEFAULT   14 Java_libv2ray_V2RayPoint_getSupportSet
    82: 0000000000fa6fbc    36 FUNC    GLOBAL DEFAULT   14 Java_libv2ray_V2RayPoint_setAsyncResolve
    86: 0000000000fa6fe0    32 FUNC    GLOBAL DEFAULT   14 Java_libv2ray_V2RayPoint_getAsyncResolve
    .....

然后在AndroidManifest.xml里面找,涉及v2ray.的能改都改,用Ctrl+Shift+F全局搜索。比如把com.v2ray.ang替换成xyz.myApplication。Smali语法不一样,再把com/v2ray/ang全局替换成xyz/myApplicationandroid:process=":RunSoLibV2RayDaemon"这个名称也可以改。

icon和应用显示名

icon通过Android Studio制作。随便开一个新工程,右键->new->Image Assetic_banner_foregroundTV Banner里面。做完直接替换。

应用显示名是android:label="@string/app_name",在资源文件里改。

其他

最后检查一下AndroidManifest.xml,看看还有哪些能改却没改的。