为了分析竞品对手的定位精度,破解了竞品的SO库,调用加密,Post 到竞品服务器上。得到竞品定位效果,难题出在竞品用的是ARM,必须用手机来进行加密,想用服务器直接加密。开始使用第一种方案,嘻嘻,IDA 反编译 SO库 得到加密函数,分析反汇编代码,得到加密逻辑,重新写一下,真心写了一半了,后来发现了X86的SO库,靠~! 那就可以直接JNI调用SO库。
为了不暴漏代码用hello.so来替代解决方案如下:
首先,就假装写一个库函数是
#include <stdio.h>
void hello(void)
{
printf("hello\n");
}
编译 gcc -shared -o hello.so hello.c
先包装一个CPP 调用hello.so,然后编译为新的SO库, 然后用JNI调用
先来java代码
public class Hello {
static {
System.load("/home/xietian/java_hello.so");
}
//public native static void encode(char[] trans, String src, int len);
public native static void hello();
public static void main(String[] args) {
hello();
}
}
javac Hello.java
javah -jni Hello
得到Hello.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h&g

本文介绍了如何破解竞品的ARM SO库,并通过JNI调用X86版本的SO库进行加密操作。作者首先尝试通过IDA反编译并重写加密逻辑,但发现X86的SO库后,决定直接使用JNI调用。详细步骤包括编译SO库,创建CPP包装层,使用javah生成头文件,最后用g++编译生成java_hello.so,并在Java中成功调用。
最低0.47元/天 解锁文章
2212

被折叠的 条评论
为什么被折叠?



