您的位置:首页 > 科技 > IT业 > 免费的app软件下载大全_自己想弄个平台怎么弄_seo入门培训学校_优化大师app下载

免费的app软件下载大全_自己想弄个平台怎么弄_seo入门培训学校_优化大师app下载

2024/11/14 4:56:28 来源:https://blog.csdn.net/weixin_74305514/article/details/143258099  浏览:    关键词:免费的app软件下载大全_自己想弄个平台怎么弄_seo入门培训学校_优化大师app下载
免费的app软件下载大全_自己想弄个平台怎么弄_seo入门培训学校_优化大师app下载

github中的示例

在gtihub中有一个混淆示例,https://github.com/luck-apple/aesTool,把它clone到本地

创建项目

新建一个native项目,语言选择Java
MainActivity中添加代码

    /*** AES加密, CBC, PKCS5Padding*/public static native String method01(String str);/*** AES解密, CBC, PKCS5Padding*/public static native String method02(String str);

native-lib.cpp里面添加函数的实现和头文件

#include "aes_utils.h"
#include "tools.h"
#include "junk.h"extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_aestool_MainActivity_method01(JNIEnv *env, jclass clazz, jstring str_) {// TODO: implement method01()const char *str = env->GetStringUTFChars(str_, JNI_FALSE);char *result = AES_128_CBC_PKCS5_Encrypt(str);env->ReleaseStringUTFChars(str_, str);jstring jResult = getJString(env, result);free(result);return jResult;
}
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_aestool_MainActivity_method02(JNIEnv *env, jclass clazz, jstring str_) {// TODO: implement method02()const char *str = env->GetStringUTFChars(str_, JNI_FALSE);char *result = AES_128_CBC_PKCS5_Decrypt(str);env->ReleaseStringUTFChars(str_, str);jstring jResult = getJString(env, result);free(result);return jResult;
}

向cpp目录里面添加文件,把aesTool里的cpp里的下图中选中的文件,copy到项目里
在这里插入图片描述
向cMakeLists.txt里添加加载的源文件

add_library(${CMAKE_PROJECT_NAME} SHARED# List C/C++ source files with relative paths to this CMakeLists.txt.aes.haes.chex_utils.hhex_utils.ctools.htools.cppaes_utils.haes_utils.cnative-lib.cpp)

然后修改MainActivity中的函数调用内容

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding = ActivityMainBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());// Example of a call to a native methodTextView tv = binding.sampleText;tv.setText(method01("Bileton"));Toast.makeText(this,method02(method01("Bileton")),Toast.LENGTH_SHORT).show();}

运行结果如下

在这里插入图片描述
在这里插入图片描述

反编译apk,反编译so

使用jadx打开apk,可以得到如下一部分信息,可以看到method01和method02的实现是在so层的
在这里插入图片描述

反编译libaestool.so文件,在导出函数表里找到method01,看到有两个被混淆了名字的函数ll11l1l1llo0OoOOOO
在这里插入图片描述
我们先使用Frida对method01这个函数进行Hook
Java层hook
在Java层Hook,使用spawn方式进行hook

setImmediate(function(){Java.perform(function(){var MainActivity = Java.use("com.example.aestool.MainActivity");MainActivity.method01.implementation = function(str){console.log("arg:",str);var result = this.method01(str);console.log("result:",result);return result;}})
})

在这里插入图片描述

主动调用

setImmediate(function(){Java.perform(function(){var MainActivity = Java.use("com.example.aestool.MainActivity");console.log("My invoke :",MainActivity.method01("Bileton"));})
})

在这里插入图片描述
Native层Hook

setImmediate(function(){var android_dlopen_ext = Module.findExportByName(null,"android_dlopen_ext");console.log("fun_android_dlopen_ext",android_dlopen_ext);var islibaestool = false;Interceptor.attach(android_dlopen_ext,{onEnter:function(args){var pathptr = args[0];if(pathptr!=null && pathptr != undefined){var path = ptr(pathptr).readCString();if (path.indexOf("libaestool")!=-1){console.log("android_dlopen_ext:",path);islibaestool = true;}}},onLeave:function(retval){if (islibaestool){var method01 = Module.findExportByName("libaestool.so","Java_com_example_aestool_MainActivity_method01");console.log("addr of method01",method01);Interceptor.attach(method01,{onEnter:function(args){ var env = Java.vm.getEnv();var jstring = args[2];var cstring = env.getStringUtfChars(jstring,null).readCString();console.log("args[2]:",cstring);},onLeave:function(retval){var env = Java.vm.getEnv();var jstring = retval;var cstring = env.getStringUtfChars(jstring,null).readCString();console.log("result:",cstring);}})islibaestool = false;}}})
})

主动调用

setImmediate(function(){var method01_addr = Module.findExportByName("libaestool.so","Java_com_example_aestool_MainActivity_method01");console.log("address of method01 is:",method01_addr);Java.perform(function(){var jstring = Java.vm.getEnv().newStringUtf("Bileton");var method01 = new NativeFunction(method01_addr,"pointer",["pointer","pointer","pointer"]);var result = method01(Java.vm.getEnv(),jstring,jstring);console.log("result:",Java.vm.getEnv().getStringUtfChars(result,null).readCString())})
})

在这里插入图片描述

使用unidbg进行模拟执行

后续补充

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com