安卓apk解压后得到的.so文件能直接放项目里面调用里面的方法吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓apk解压后得到的.so文件能直接放项目里面调用里面的方法吗?相关的知识,希望对你有一定的参考价值。

使用androidstudio创建一个Android项目
打开Androidstudio创建一个项目,命名为tryndk
在项目中新创建一个类,在其中声明native方法在src/main目录下创建一个工具类,用来存放native方法
在Javautils类创建两个方法,声明为native
然后选中项目,点击build->make project,在项目中的build->intermediates->classes->debug->com->example->tryndk下就能看见javautils.class文件了
在Androidstudio中打开终端(View->ToolWindows->Terminal)在terminal中进入到main目录中,然后在键入javah -d jni -classpath ../../build/intermediates/classes/debug com.example.tryndk.javautils记得debug 后面有个空格。然后就能在src/main目录下看到jni文件夹,里面存放了一个头文件com_example_tryndk_javautils.h,里面生成了函数声明,
Java_com_example_tryndk_javautils_getStringFromNative为方法名,其中getStringFromNative为在javautils文件中创建的getStringFromNative方法。
然后在jni目录下创建一个c文件命名为MyJni.c,实现相应的方法
方法中就是返回了一个字符串。
参考技术A 我觉着不行,直接放里面应该调取不成功的 参考技术B .so文件应该是不能调试 的 因为这些都是linux的资源文件,ide并不能解析 参考技术C 这个没必要吧,你既然已经下载了APK,为什么还要把它放到这个文件夹里直接安装不就行了吗?

安卓逆向 -- 调用其他APK的SO文件

往期文章

安卓逆向 -- NDK开发(简单项目)

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

前提:反编译apk只有调用代码,没有实现代码

一、新建一个空项目

二、调用其他apk的so文件

1、新建一个package,就是我要调用其他apk的包名

2、新建一个类文件,名字和调用so的类的名字一样

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

3、新建一个jnilibs文件夹,将so文件拷贝过来

4、在java层调用

public class MainActivity extends AppCompatActivity {    static {        System.loadLibrary("native-lib");    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        String name= SignatureUtils.signatureparams("aiyoubucuo!!!");        Log.d("aiyou",name);    }}

5、运行结果

禁止非法,后果自负

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

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

欢迎报名安卓逆向培训,报名微信(QQ):335158573

以上是关于安卓apk解压后得到的.so文件能直接放项目里面调用里面的方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

安卓游戏,妖姬三国APK里面的.pvr.ccz文件用啥工具打开?或解压?

反编译文件怎么找主activicity

安卓逆向 -- APK文件结构

APK文件怎么打开 怎么查看里面包含的信息

Android 将 apk 反编译为源码

安卓逆向 -- 调用其他APK的SO文件