安卓逆向 -- NDK开发实现MD5算法

简介: 安卓逆向 -- NDK开发实现MD5算法

一、正常SO层校验框架


1、新建一个NativeC++项目


0a2653c851af460fa595bd959398a8f1.png


2、新建一个SignatureUtils类,里面写一个原生方法

package com.bucuo.ndk20211010;
public class SignatureUtils {
    public static native String signatureparams(String param);
}

3、在报错处按alt+enter,自动添加native层代码

extern "C"
JNIEXPORT jstring JNICALL
Java_com_bucuo_ndk20211010_SignatureUtils_signatureparams(JNIEnv *env, jclass clazz,
                                                          jstring param) {
   
    const char *sparam=env->GetStringUTFChars(param,0);//将Java的String转为C的字符串
    return env->NewStringUTF(sparam);
}

4、java层调用

tv.setText(SignatureUtils.signatureparams("aiyoubucuo!!!"));

5、运行结果


0eacb84100b54626af849e6b562bf92a.png


6、对校验进行加盐操作

using namespace std;
static const char* sigstr="aybc";
const char *sparam=env->GetStringUTFChars(param,0);//将Java的String转为C的字符串
string str(sparam);
str.insert(0,sigstr);
str=str.substr(0,str.length()-3);
return env->NewStringUTF(str.c_str());

7、运行结果


2d65d23f6d4748949b924e4057485923.png


二、加入MD5进行校验


1、导入md5.cpp及md5.h文件


2e9b90b2ca334476abebe75bafe6eeaa.png


2、实现md5


const char *sparam=env->GetStringUTFChars(param,0);//将Java的String转为C的字符串
    string str(sparam);
    str.insert(0,sigstr);
    str=str.substr(0,str.length()-3);
    MD5_CTX context;
    MD5Init(&context);
    MD5Update(&context, (unsigned char *) str.c_str(), str.length());
    unsigned char digest[16];
    MD5Final(&context,digest);
    char md5_str[33]={0};
    for(int i=0;i<16;i++){
        sprintf(md5_str,"%s%02x",md5_str,digest[i]);
    }
    return env->NewStringUTF(md5_str);
}


3、运行结果


4cebaac233b3433da32a72337a77fc60.png


禁止非法,后果自负

目录
相关文章
|
12月前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
9061 71
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
12月前
|
人工智能 编解码 算法
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
378 0
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
1038 4
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
431 1
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
234 3
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
1447 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
604 1
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
1809 1
|
算法 JavaScript 前端开发
消息摘要算法:MD5加密
消息摘要算法:MD5加密
339 1

热门文章

最新文章