- 博客(216)
- 资源 (29)
- 收藏
- 关注
原创 android 反调试 实践(1)
(一)xposed 检测1. 每一个被hook的进程,都会将xposed 的相关库文件和jar 文件加载到相应的进程空间中,如图:这里看到进程空间中加载了1)app_process32_xposed2)libxposed_art.so3)XResourcesSuperClass.dex既然能看到,一般的应用都会使用读取maps 文件的方法检测到,如何规避呢:1)刷机...
2019-05-31 09:42:42 1189
转载 setsockopt和getsockopt函数详解
备注:本文非楼主原创,是楼主在网上发现的。。写的不错,存起来,以备后用功能描述:获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应...
2019-01-26 18:43:44 2765
原创 android native 调试 打印调用栈
在调试 android 某些应用时,需要打印调用栈, 但是高版本的5.0 以上已经去掉了libcorkscrew.so 和 libcutils.so 两个库,改用其他的google 库文件,但是可以使用andorid 4.4 , 4.3 系统使用。使用时可以直接调用 getCallStack()该方法即可。android 6.0 可用 typedef int (*Unw_Bac...
2019-01-21 15:56:20 3526
原创 数据库 wal 模式 分析
对于以下错误的解决思路 看我的另外一篇文章https://blog.csdn.net/tianxuhong/article/details/78752357 android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14) ▼ 目录1.概述2...
2019-01-04 11:17:39 5978 1
原创 android 复制文件夹, 复制文件
package uusafe;import android.util.Log;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStrea...
2018-08-23 10:18:41 4241
原创 linux c 网络,获取本地可用的端口号,判断网络是否连通
//// Created by darren on 18-8-22.//#include <netdb.h>#include <errno.h>#include <string.h>#include <arpa/inet.h>#include <fcntl.h>#include <unistd.h>i...
2018-08-23 09:57:50 3962
原创 linux c 网络编程, 常用网络函数,范例
hstrerror返回网络错误原因的描述字符串相关函数:herror表头文件:#include <netdb.h>函数定义:const char *hstrerror(int err)函数说明:hstrerror()用来依参数err的错误代码来查询socket错误原因的描述字符串, 然后将该字符串指针返回返回值 :返回描述错误原因的字符串指针范例:/*显示错误代码0到...
2018-03-14 10:00:59 917
转载 解密微信数据库文件解析
图解说明:微信大量数据存储在本地比如:联系人(包含好友地区、电话、通过那种方式添加)、聊天内容(图片、文字、语音、视频、位置、名片、其他app分享链接)、聊天室、收藏信息、朋友圈内容(包含好友详情、点赞、评论);摇一摇、附近人、最近联系人、好友请求、图片存放路径;微信内置的表情包;如联系人:聊天信息其他表工具:ES文件浏览器(在各大app市场上都可以下载,在这个app 菜单中打开“root工具箱”...
2018-03-05 09:37:34 72684 35
原创 linux 判断是否是合法ip,根据域名获取ip
//// Created by darren on 18-1-31.//#include #include #include #include #include #include bool isValidIP(const char *ipstr);int get_ip_by_domain(const char *domain, char *ip);void test_
2018-01-31 14:41:59 2096
原创 System.err: android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (c
12-08 15:10:17.278 30336 30351 E SQLiteLog: (14) cannot open file at line 31289 of [5a3022e081]12-08 15:10:17.278 30336 30351 E SQLiteLog: (14) os_unix.c:31289: (2) open(/data/user/0/com.xxx.xxxx/
2017-12-08 16:05:54 2581
转载 android 反编译apk ,修改apk ,smail,插桩
近期遇到了需要修改apk源码的问题,于是上网查了下相关资料,编写了HelloWorld进行修改看看可行性,经过实验证明此方案可行,并且后来也成功用这个方法对目标apk进行了修改,只不过需要修改的部分比HelloWorld复杂些,但是只要了解下smali也能进行相关的修改,下面讲下具体的步骤,文中所用到的资源会在文章的结尾给出,感兴趣的可以下载试试。 首先介绍下要用到的工具:j
2017-11-15 10:05:41 1812
原创 andorid 自定义log存入文件
//// Created by darren on 17-10-9.//#include #include #include #include #include #include #include #include "5.log.h"#define PROCESSNAME "log.tmp"#define MAXBUFSIZE 1024int get_curren
2017-10-11 09:31:48 519
转载 android 调试方法
8大你不得不知的Android调试工具我们今天将讨论的是8大你不得不知的Android调试工具,这些工具部分属于系统自带,也是一种方式方法,希望对大家有所帮助。作者:佚名来源:博客园|2010-08-27 10:40 移动端 收藏 分享1. 查看当前堆栈1) 功能:在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系2) 方法:
2017-09-08 15:22:46 802
原创 父进程异常退出时, 杀死所以子进程
#include #include #include #include #include #include void my_system(const char*cmd){ pid_t pid; pid = fork(); if (pid == 0) { prctl(PR_SET_PDEATHSIG, SIGHUP);
2017-09-06 15:35:04 3545
原创 android 调试技巧
一. 获取Trace调用栈信息(Trace)是分析异常经常使用的,这里简单划分两类情况: 当前线程Trace: 当前执行流所在线程的调用栈信息; 目标进程Trace:可获取目标进程的调用栈,用于动态调试;1.1 当前线程Trace1) Java层Thread.currentThread().dumpStack(); //方法1Log.
2017-08-28 10:34:12 641
转载 Android插件化原理解析——ContentProvider的插件化
Android插件化原理解析——ContentProvider的插件化 发表于 2016-07-12 | | 8700次阅读 目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件化,这几个组件各不相同,我们根据它们的特点定制了不同的插件化方案;那么对于ContentProvider,它又有什
2017-08-08 16:56:54 445
原创 android 反射 记录
private static String audioParse(byte[] msgData) { try { // Object o = BUtils.getObj(msgData); Class cls = Class.forName("localpb.richMsg.RichMsg$PicRec"); Object haha = cls
2017-07-20 15:20:32 445
转载 DNS协议详解及报文格式分析
DNS协议详解及报文格式分析Posted on 2017-06-18by Jocent— No Comments ↓目录一. DNS协议理论知识1.1. 域名结构1.2. 域名服务器1.3. 域名解析过程二. DNS协议报文格式2.1 头部2.2 正文三. Wireshark分析DNS协议3.1 请求报文3.2 响应报文
2017-07-10 14:38:12 112244 11
转载 RxJava 使用场景小结
RxJava 使用场景小结RxJava 2015-12-16 08:24:50 发布您的评价: 0.0很差 0收藏原文 http://android.jobbole.com/82241/ 取数据先检查缓存的场景 取数据,首先检查内存是否有缓存 然后检
2016-12-06 19:34:49 485
原创 jni开发需要注意的问题:
jni开发需要注意的问题:背景: 最近一个月一直在做移植库的工作,将c代码到share library移植到Android平台。这就涉及到Android NDK(native develop kit)内容。这里只想记录下JNI(Java native interface)经常遇到到问题。 问题1. 忘记delete local reference。带New到方法(如:NewByt
2016-11-25 17:54:39 1611
原创 java 中的空指针,不为空,的理解
一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。 比如:int a = null;是错误的。Ojbect o = null是正确的。 Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们不能int a后,不给a指定值,就去打印a的值。这
2015-11-13 10:05:59 5530 2
原创 关于android 深度睡眠的认识
刚在做手机自动化测试的过程中,发现手机深度睡眠后会出现以下问题先来了解一下Windows下的睡眠功能:电脑在 睡眠状态时,将切断除内存外其他硬件配件的电源,工作状态的数据将保存在内存中,这样在重新唤醒电脑时,就可以快速恢复睡眠前的工作状态。 Linux系统下的睡眠功能:Linux操作系统的睡眠有两种方式:mem和standby ,这两种方式都是suspend to RAM,
2015-10-27 11:27:33 7355
原创 动态申请内存,释放出现错误
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0000000000ae0010 ***======= Backtrace: =========/lib/x86_64-linux-gnu/libc.so.6(+0x7e846)[0x7fed53fd1846]./a.out[0x4006db]/l
2015-09-18 10:02:07 1970
原创 记录一个指针问题(内存空间的初始化)
首先正确理解一下例子。 void test(){ char *str[]={"welcome","to","fortemedia","Nanjing"}; char * * p=str+1; //p指向 "to"字符串地址 printf("%s\n",str[0]); printf("%s
2015-09-17 15:15:32 1045
转载 Android开发之动态库调用
1.编写并生成Android下可用的动态库(1)编写动态库源程序文件 这里以my_add.c为例。首先进入/home/android/development/,该目录下创建文件夹lib_test,更爱该目录的权限后进入该目录。依次执行 # cd /home/android/development # mkdir lib_test # chmod 77
2015-08-21 10:05:37 1335
原创 一个经典的消费者和生产者的实现(linux )
#include #include #define BUFFER_SIZE 16 // 缓冲区数量 struct prodcons { // 缓冲区相关数据结构 int buffer[BUFFER_SIZE]; /* 实际数据存放的数组*/ pthread_mutex_t lock; /*
2015-08-17 16:58:09 1153
原创 主线程和子线程的同步控制
一个线程的结束有两种途径,一种是象我们下面的例子一样,函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit来实现。另外需要说明的是,一个线程不能被多个线程等待,也就是说对一个线程只能调用一次pthread_join,否则只有一个能正确返回,其他的将返回ESRCH 错误。在Linux中,默认情况下是在一个线程被创建后,必须使用此函数对创建的线程进行资源回收,但是可以设
2015-08-17 13:45:35 5052 1
原创 java 调用 库文件错误查找方法
第一步首先找到 backtrace:关键字,然后找到都应的库文件 出错的地方 pc 0000088b /system/lib/libNDK_04.so (SayHello+98),08-13 17:08:28.041 I/DEBUG ( 163): backtrace:08-13 17:08:28.041 I/DEBUG ( 163): #00 pc 000
2015-08-13 17:55:48 1166
原创 java.lang.UnsatisfiedLinkError: Couldn't loadXX from loader dalvik.system.
java.lang.UnsatisfiedLinkError: Couldn't load NDK_04 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.duicky-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.duicky-1,
2015-08-13 16:44:06 5837
转载 android源码编译apk集成第三方so库
一般编译android应用,生成apk,有以下几个方法: 1.传统的在eclipse平台下编译生成apk,这种情况下,需要指定android sdk,通过eclipse编译生成apk,编译的apk拥有较低级别的用户级别权限,可能有些底层操作没有权限实现,比如部分system调用,访问系统文件目录等。如果存在jni调用,则需要创建jni目录,并在jni目录里面创建android.mk,通过
2015-08-13 16:39:06 11635
转载 NDK 开发
为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。下面就介绍下Android NDK的入门学习过程:入门
2015-08-13 16:05:18 646
原创 android jni 调用
android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和C/C++代码。其中C/C++代码用于生成库文件,Java代码用于引用C /C++库文件以及调用C/C++方法。android Java部分代码:/* * Copyright (C) 2008 The Android Open Source Project * *
2015-08-13 16:01:56 1253
原创 jni 调用 例子
JNI允许程序员编写的本地方法处理的情况下,当一个应用程序不能完全在Java编程语言编写的,例如当标准Java类库不支持平台特定的功能或程序库。它也用来修改在另一种编程语言编写的应用程序中的一个现有的应用程序,以访问爪哇应用程序。许多标准库的类依赖于JNI的开发者和用户提供的功能,例如文件I / O和声音功能。包括性能和平台敏感的标准库中的实现,允许所有的应用程序访问此功能的安全和平台无关的方式。
2015-08-13 15:00:22 852
转载 socket 编程实例
服务器部分:#include // for sockaddr_in#include // for socket#include // for socket#include // for printf#include // for exit#include // for bzero/*#inc
2015-08-12 14:02:43 625
转载 android httpClient 支持HTTPS的2种处理方式
android httpClient 支持HTTPS的2种处理方式问题: 项目中Android https或http请求地址重定向为HTTPS的地址,相信很多人都遇到了这个异常(无终端认证): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate解决过程: 1.没遇到过的问题,搜索
2015-08-11 14:10:46 2253
转载 Linux网络编程入门
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的
2015-07-10 15:18:38 676
转载 推荐一款加密解密的算法,用于简单数据的传输。
package TestCodeAndEnCode; public class SecBase64 { private static final byte[] encodingTable = { (byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F', (by
2015-07-06 11:02:37 785
转载 android studio快捷键集合
itemCtrl+P 查看变量参数信息,也就是看变量是哪种类型 \item Ctrl+B 查找该变量的定义位置。 \item Ctrl+Q 查找快速文档,即在另外一个窗口中打开其声明 \item Alt+Shift+C 查看工程最近更改的地方 \item Ctrl+space 自动完成代码 \item Ctrl+shift+Enter 自动填充表达式如
2015-07-01 10:28:56 707
转载 使用Android Studio查看Android Lollipop源码
Android Studio作为Google的亲儿子,Nexus手机系列所收到的待遇大家有目共睹.Android5.0出来之后,Nexus5第一时间就升级到了最新的系统.那么作为Google亲儿子的Android Studio同样备受Google的重视,我也是第一时间从Eclipse转投到了Android Studio的怀抱中,从最初的测试版本一路升级到现在的1.0正式版本(今天发布了1.0.
2015-06-25 15:05:20 2455 4
open ssl demo example (证书自带)
2019-01-28
com.alibaba.fastjson.JSON , net.sf.json.JSONObject
2018-08-22
AmaterasUML的配置及使用 .tar
2015-12-24
andriod微信抢红包实现
2015-12-02
android jni
2015-08-13
android jni 例子
2015-02-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人