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

Posted web安全工具库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓逆向 -- NDK开发实现MD5算法相关的知识,希望对你有一定的参考价值。

源码下载地址:

关注微信公众号回复:20211014

一、正常SO层校验框架

1、新建一个NativeC++项目

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

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

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

extern "C"JNIEXPORT jstring JNICALLJava_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、运行结果

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、运行结果

二、加入MD5进行校验

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

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、运行结果

禁止非法,后果自负

欢迎关注公众号:逆向有你

欢迎关注视频号:之乎者也吧

以上是关于安卓逆向 -- NDK开发实现MD5算法的主要内容,如果未能解决你的问题,请参考以下文章

安卓逆向 -- 实现SO层签名验证

安卓逆向 -- 绕过SO层签名验证

Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段

安卓逆向 -- 自吐算法(MD5和SHA)

安卓逆向 -- 算法基础(MD5)

安卓逆向 -- 算法基础(数字签名)