安卓逆向 -- 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、运行结果

图片

禁止非法,后果自负

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

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

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web安全工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值