随笔分类 - NDK
摘要:一. 手工修复ndk环境bugEclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如①. 头文件不识别②. 头文件识别了, 类型不识别针对这一的bug,我们一般按照如下方式可以进行修复1. 在eclipse中关闭指定Projectmac下显示所有文件显示:defaults write com.apple.finder AppleShowAllFiles -bool tru...
阅读全文
摘要:一.Feature Projecties工程设置1. 新建一个Feature Projecties2. 选择我们的插件工程,finish3. 在目录下新建一个Category definition4. 选择我们的Feature工程5. 添加Feature6.Export 7. 设置导出目录8. option->browse->选择category.xml最后目录下会生成二. 创建Update Si...
阅读全文
摘要:一.原理当在系统中调用System.loadLibrary函数时,该函数会找到对应的动态库,然后首先试图找到"JNI_OnLoad"函数,如果该函数存在,则调用它JNI_OnLoad可以和JNIEnv的registerNatives函数结合起来,实现动态的函数替换二. 实战用ndk学习17的例子继续, 下面演示动态替换TestJni中的sayHellojstring JNICALL Java_or...
阅读全文
摘要:1. 设置调试选项在AndroidManifest文件加入允许调试android:debuggable="true" 此时编译项目会多出:2. 配置调试代码把需要调试的代码,放如按钮事件中,如果放在OnCreate会导致连接调试器时,代码已经跑完了Button btnTest = (Button)findViewById(R.id.button1);btnTest.setOnClickLis...
阅读全文
摘要:一.Hello World1. 定义函数原型native关键字定义的函数即为jni函数2.生成头文件切换到src目录执行: (这个过程可以写脚本自动完成,比如自动拷贝到jni目录)javah -jni 包名.类名在根目录下生成:org_bing_testjni_MainActivity.h3. 工程中添加jni代码工程右键->添加native code->输入名字->finish多了如下文新建一个...
阅读全文
摘要:一.Java反射机制先了解Java反射机制原理例子网上很多,反射很灵活二. 在JNI层调Java用途: Java层逆向比较容易,增加逆向门槛,把调用都写到JNI层, 让Java层无调用关系注意: C和C++有所不同,这里使用C++作为例子1. 首先在代码中提供一个ShowLog函数private void ShowMsg() { Log.d("_BING_", "ShowMsg");} ...
阅读全文
摘要:一、UNIX Domain Socket概念:UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC)特点:1. 它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等2. 只是将应用层数据从一个进程拷贝到另一个进程。工作模式:SOCK_DGRAM 类似于UDPSOCK_STREAM 类似于TCP用途:UNIX Domai...
阅读全文
摘要:Linux IPC机制来自为知笔记(Wiz)
阅读全文
摘要:一.进程相关信息/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件结构如下:进程相关的信息如下:部分信息如下cmdline:maps:进程相关信息:+ /proc/pid/cmdline 包含进程的参数列表+ /proc/pid/environ 进程的环境+ /proc/pid/maps 进程的地址映射信息+ ...
阅读全文
摘要:1. 进程地址空间 2.内存管理 栈上分配空间 alloca() 栈上分配大小 strdupa() 拷贝一个字符串到栈上(显然这个函数不安全) 挖漏洞的可以全局的源码审计下这个函数了 strndupa() 拷贝指定长度的内容到栈上 存储器操作函数: memset bzero memmove bcop
阅读全文
摘要:画了一天的思维导图,好累啊一.概述二.文件IO三.缓冲区输入输出四.高级IO五.文件和目录来自为知笔记(Wiz)
阅读全文
摘要:动态使用共享库函数 dll_main 环境介绍 续上节代码 目录结构: android.mk如下: LOCAL_PATH:=$(callmy-dir) include$(CLEAR_VARS) LOCAL_MODULE:=demo LOCAL_SRC_FILES:=mod1.cppmod2.cppmod3...
阅读全文
摘要:目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境) 手工编译静态库 老规矩还是先手工操作,知其然并知其所以然 需要用到的核心命令: gcc -g -c -fpic -Wall mod1.c mod2.c mod3.c gcc -g -shared mod1.o mod2.o mod3.o -o libfoo.so gcc -g ...
阅读全文
摘要:目录: 手工编译静态库 ndk-build编译静态库 手工编译静态库 老规矩还是先手工操作,知其然并知其所以然 需要用到的核心命令: gcc –g –c mod1.c mod2.c mod3.c 编译obj (debug版) AR r libdemo.a mod1.o mod2.o mod3.o ...
阅读全文
摘要:生成debug版程序 方法一: 使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之外,还会生成gdbobserver,gdb.setup调式文件 方法二: 修改AndroidManifest.xml文件,增加debuggable属性为true <applicationandroid:debuggable="true" ...
阅读全文
摘要:默认情况下ndk不支持标准C++库,异常, rtti等 在ndk文档有关于C++ support的详细介绍 一. 使用C++标准库 介绍: 默认是使用最小额度的C++运行时库, 在Application.mk中添加APP_STL指明所需要的库 需要注意的是,目标手机或者模拟器上可能没有下面的共享库,此时就需要你作为静态库使用 ndk中各种库的...
阅读全文
摘要:NDK学习4: Eclipse HelloWorld 1.配置Eclipse NDK环境 Window->preferences->android->ndk 2.新建Android工程 在工程目录上点右键->Android Tools-> add native support 这个时候工程会多出一个jni目录 3.编辑Hello.cpp #includ...
阅读全文
摘要:1.配置环境变量 添加make工具path环境变量: E:\Android\android-ndk-r10b\prebuilt\windows-x86_64\bin 2.编写Hello World 新建hello.c #include <stdio.h> int main(int argc, cha
阅读全文

浙公网安备 33010602011771号