
Android NDK
XXOOYC
read the fucking code....
展开
-
让App吐出自己的Crash信息
某App启动后Native层就会Crash,但是由于它集成了google_breakpad,将Native层的异常全部捕获并处理了,所以看不到任何的异常信息,只有这么一段:06-24 14:22:45.165 570 570 I Zygote : Process 7047 exited due to signal (11)通过分析它是集成了google_breakpad,于是找...原创 2019-06-25 11:22:54 · 769 阅读 · 0 评论 -
Android基于LLVM的Native层代码混淆
1.采用LLVM进行Native层代码混淆,先看一下混淆的效果混淆之前的函数:混淆之后的函数:混淆后的函数体几乎变得无法阅读!2.再看文件大小变化:混淆前:混淆后:3.如何集成:首先下载源码并编译,参考:https://github.com/obfuscator-llvm/obfuscator/wiki/Installation下面是实际用...原创 2019-04-12 18:19:00 · 4903 阅读 · 0 评论 -
基于Android的http&https中间人攻击
本文所说的中间人攻击是在同一台Android手机上,监听其他App的网络流量,支持http&https.原理:通过创建VPN拿到其他APP的所有网络流量。https部分则是通过导入自己的CA,去过https证书验证。主要技术难点:1.通过VPN,拿到的是一个个的IP层数据包,比如sync包,fin包,psh包等,需要自己做好状态维护2.仅针对http的处理还不是很难,但是对Http原创 2017-10-13 10:45:35 · 5562 阅读 · 0 评论 -
使用JNIEnv全局变量调用FindClass()等函数发生crash
********** Crash dump: **********Build fingerprint: 'samsung/gt58ltezc/gt58ltechn:5.0.2/LRX22G/T355CZCU1AOE1:user/release-keys'pid: 6367, tid: 6405, name: Thread-1723 >>> com.nationsky.rc.samsung:原创 2015-09-07 14:01:19 · 10765 阅读 · 4 评论 -
JNI中如何打印Call Stack
NDK里面好像没有专门打印Call Stack的函数,正好又要用到这个功能,Google了一翻,可以用stack unwind相关的API实现。关于什么是stack unwind的解释如下:http://www.ibm.com/support/knowledgecenter/SSAE4W_9.0.0/com.ibm.xlcpp111.aix.doc/language_ref原创 2016-03-28 22:14:25 · 6708 阅读 · 1 评论 -
Android中创建杀不死的APP进程(5.0以下)
所谓的杀不死指的时进程被杀掉后,会自动重启。即便时在设置里面强行停止后,也能够自动重启。那么如何自动重启呢?目前想到的有3种方式:1.使用AlarmManager来定时发intent启动2.Native层重写对SIGKILL/SIGTERM信号的处理3.Native层fork一个子进程,来监听APP所在的进程是否有被kill掉对于第1种方式,java原创 2015-06-30 10:19:43 · 1990 阅读 · 0 评论 -
三星Remote Control开发遇到的坑
1.三星开发者官网https://seap.samsung.com/developer/坑一:调用RemoteInjection注入事件没有权限官网API说明如下:public boolean injectKeyEvent (KeyEvent ev, boolean sync)An administrator can use this API to inje原创 2015-09-06 22:33:38 · 642 阅读 · 0 评论 -
NDK在studio中的编译
文档:http://ph0b.com/android-studio-gradle-and-ndk-integration/android { ... sourceSets.main { jniLibs.srcDir 'src/main/libs' }}原创 2015-10-27 18:44:19 · 458 阅读 · 0 评论 -
gradle编译ndk失败
将Eclipse Project移到Android Studio中,遇到很多问题。问题1:我的Application.mk中申明了只编译ARM 32位,移过去却发现在编译ARM 64,于是Fail./home/yanchen/StudioSpace/RemoteControll-sansang/app/src/main/jni/sqlite/sqlite3.c:90644:29:原创 2015-09-17 16:34:55 · 2705 阅读 · 0 评论 -
如何引用第三方提供的.so库文件以及如何使用javah生成.h文件
1.在src目录下执行如下命令:javah -classpath . -jni com.xx.RemoteHandService如何引用第三方so文件:第一步:新建目录,并将so与相关的.h文件拷贝进来,如下图:第二步:添加Android.mk LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LO原创 2015-08-27 17:25:14 · 1446 阅读 · 0 评论 -
char (*)[]无法传给参数char **
编译时错误:error: cannot convert 'char*' to 'char**' for argument '2' to 'int main(int, char**)' main(3,&argv[0][0]); ^原因:在《C专家编程》10.3节的小启发里讲的很透彻:(以下这段文字及对比一定要认真分析!)数组和指针参原创 2015-08-28 10:47:33 · 3835 阅读 · 1 评论 -
multiple definition of 'a'
c/c+++中的全局变量都是定义在堆中,不用文件如果有重复全局变量,编译会报错:a.cppint a = 1;b.cpp:int a = 2;编译报错:multiple definition of 'a'【解决方式】使用公用的.h文件,并加以def来防止重复定义:#ifndef COMMON_INIT#define COMMON_INIText原创 2015-09-01 17:51:56 · 338 阅读 · 0 评论 -
三星手机上执行system()等函数失败
在三星手机在native发生广播,system("am broadcat.....")却发现总是失败。后追查原因是没有权限导致。为何和有权限问题?pull 出system/lib/libc.so看了下system(),execv()等函数,和原声相比做了很大的改变。最后把native程序放到/system/bin目录下才有权限可执行。原创 2015-08-27 17:20:04 · 695 阅读 · 0 评论