安卓逆向 -- 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 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、运行结果
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算法的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段