win10下ndk编译arm可执行体

Posted 寻步

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win10下ndk编译arm可执行体相关的知识,希望对你有一定的参考价值。

编译参考文章

http://blog.csdn.net/john_1984/article/details/12622215

一、编写soLoader主文件

soLoader.c内容:

#include <stdio.h>
typedef int (*MAIN_FN)(int,char**);
int main(int argc,char* argv[]){
    printf("hello so!\n");
    int ret = dlopen("/data/local/xxx.so");
    if (ret==0)
    {
        printf("file not found!\n");
    }
    void* pfn = dlsym(ret,"main");
    if (pfn==NULL)
    {
        printf("method \"main\" not found!\n");
    }
    ((MAIN_FN)pfn)(argc,argv);
    printf("result: %x\n",ret);

}

二、编译o文件

E:\Documents\android\sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin>arm-linux-androideabi-gcc.exe --sysroot=E:\Documents\Android\sdk\ndk-bundle\platforms\android-19\arch-arm -o E:\VMShare\Work\Andriod\antidebug\soLoader\jni\soLoader.o -c E:\VMShare\Work\Andriod\antidebug\soLoader\jni\soLoader.c

三、链接o文件为elf文件

E:\Documents\Android\sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin>arm-linux-androideabi-gcc.exe --sysroot=E:\Documents\Android\sdk\ndk-bundle\platforms\android-19\arch-arm -o E:\VMShare\Work\Andriod\antidebug\soLoader\jni\soLoader E:\VMShare\Work\Andriod\antidebug\soLoader\jni\soLoader.o

 或者直接编译链接(二,三命令合并):

E:\Documents\Android\sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin>arm-linux-androideabi-gcc.exe --sysroot=E:\Documents\Android\sdk\ndk-bundle\platforms\android-19\arch-arm -o E:\VMShare\Work\Andriod\antidebug\soLoader\jni\soLoader E:\VMShare\Work\Andriod\antidebug\soLoader\jni\soLoader.c

四、push到手机,执行

//pc端命令
E:\VMShare\Work\Andriod\antidebug\soLoader\jni>adb push soLoader /data/local/tmp
//adb shell [email protected]:
/data/local/tmp # chmod 775 soLoader [email protected]:/data/local/tmp # ./soLoader hello so! file not found! method "main" not found! [1] + Stopped (signal) ./soLoader [email protected]:/data/local/tmp # ls

 

以上是关于win10下ndk编译arm可执行体的主要内容,如果未能解决你的问题,请参考以下文章

如何把ndk编译出来的可执行文件伪装成so打包到apk中

Android 逆向代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

Android 逆向代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

使用NDK编译mono

Android NDK独立编译链

Android NDK独立编译链