- 博客(20)
- 资源 (8)
- 收藏
- 关注
原创 Android LLVM-Obfuscator C/C++ 混淆编译的深入研究
一、 LLVM是什么?(1)LLVM是lowlevel virtual machine的简称,是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。(2)LLVM 诞生于2003.10伊利诺伊大学香槟分校,创始人ChrisLattner,现任苹果公司『开发者工具』部门的主管。 二、 LLVM-Obfuscator 是什么?(1)LLVM-
2015-04-29 19:30:04 24202 21
原创 c/c++字符串混淆方案总结
有过破解native程序经验的人都知道,在大量的汇编代码面前不可能是从头开始理解代码的,必须找到一两个点进行突破。字符串往往就是这样的关键点,在代码中hardcode的字符串会可以原封不动的在生成的binary中查找到。所以要增加破解的难度,对字符串进行混淆(或者叫加密,下面的文字可能混淆和加密混着用,在这里没有区别)是很重要的一步。只要字符串在代码中出现,那么其必然会在binary中出现,所以要
2015-04-29 19:14:29 22994 5
转载 Android DEX安全攻防战
英文原版:http://www.strazzere.com/papers/DexEducation-PracticingSafeDex.pdf该文章发表于Black Hat 2012,虽然内容不够新鲜,也许好多方法目前已经失效,但是仍然会给我们反逆向方面很多的启示!一、DEX相关基础知识 1、什么是DEX? DEX是Dalvik EXecutable的简称
2015-04-28 20:04:16 1445
转载 Android dex分包方案
当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到 下列现象 :1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT2. 方法数量过多,编译时出错,提示:Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xf
2015-04-28 19:29:33 1812 1
转载 Android apk编译/反编译工具baksmali和smali用法
1. smali 下载地址:http://code.google.com/p/smali/downloads/list 用法如下:首先把baksmali-1.4.1.jar和smali-1.4.1.jar文件放到android sdk安装路径下的tools里面,把apk用WinRAR解压并提取classes.dex文件,也放入tools里面,然后用命令行,cd tools目录下,输入jav
2015-04-28 17:41:53 9179
原创 Android DexClassLoader/PathClassLoader 动态加载jar/APK
可以使用Android ClassLoader完成DEX的动态加载,DEX文件可以附属在assert或raw目录也可以运行时从网络下载。1.当前动态加载常用的class loader (1)DexClassLoader:这个可以加载jar/apk/dex,也可以从SD卡中加载,也是本文的重点。 (2)PathClassLoader:只能加载dex文件和已经安装到Android系统中
2015-04-28 16:25:30 4285 1
原创 Android 悬浮窗的实现
1. 首先在manifest中添加如下权限:注意:在有些手机上,手机自带的权限管理软件默认会禁止悬浮窗口permission,需要在设置中打开本应用的”显示悬浮窗”开关,并且重启应用,否则悬浮窗不能显示在手机桌面上。(例如小米4 手机,需要在系统安全中心App -> Permission -> Your App -> Display pop-up window)2. 通过Cont
2015-04-27 17:27:28 1676
原创 Android <activity-alias> 的用法研究
1. 问题最近在开发公司App的过程中有一个需求:需要改变HomeActivity (launcher 的入口) 的名称为StartupActivity,先不要问为什么会有这么脑残的需求,反正就是要改名称。好吧,那就改吧,按理说也没有什么大碍。可是往往是我们把事情想得太简单—— App 发布后在某些手机上版本升级后,点击桌面icon 竟然无法启动App直接崩溃。后来才搞清楚原因:某些手机安
2015-04-27 11:54:36 4689
原创 Android 关于NDK Clang3.4 编译可执行文件无法启动的问题
1. 发现问题今天遇到一个奇怪的问题:编写了一个C 的可执行二进制文件,利用ndk-build 编译后,调用如下代码执行该文件: public void run() { Process process = null; try { process = Runtime.getRuntime().exe
2015-04-20 20:11:03 1288
原创 process.waitFor() 返回值含义
以下是Linux中返回值对照表"OS error code 1: Operation not permitted""OS error code 2: No such file or directory""OS error code 3: No such process""OS error code 4: Interrupted system call""
2015-04-20 16:17:09 7187
原创 Linux 进程间管道pipe通信
1. 函数说明 pipe()会建立管道,并将文件描述词由参数filedes数组返回。对于调用fork 创建的子进程,父子进程之间通信常用pipe来实现,非常方便。 #include //参数 // filedes[0]为管道里的读取端 // filedes[1]则为管道的写入端 //返回值 // 若成功则返回零,否则返回-1,错误原
2015-04-16 16:01:34 1024
转载 Java ServerSocket用法深入分析
本篇文章观点和例子来自 《Java网络编程精解》, 作者为孙卫琴, 出版社为电子工业出版社 在客户/服务器通信模式中, 服务器端需要创建监听端口的 ServerSocket, ServerSocket 负责接收客户连接请求. 本章首先介绍 ServerSocket 类的各个构造方法, 以及成员的用法, 接着介绍服务器如何用多线程来处理与多个客户的通信任务.
2015-04-15 17:24:27 4666
原创 Android RSA加解密算法,MD5RSA签名验证算法
package com.test.security;import java.io.ByteArrayOutputStream;import java.security.Key;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import
2015-04-15 13:27:30 1996
原创 Android C 层如何输出log
很简单,只要在一个头文件MyLog.h 中做如下定义,然后在需要用的地方include 这个头文件就可以直接调用log 函数了,同Java 层的调用几乎一样:MyLog.h #pragma once#include#define DEBUG 1#define LOG_TAG "myLog"#if DEBUG #define LOGI(fmt, args...) _
2015-04-14 17:29:11 877
原创 Android Socket 通信
最近在开发过程中遇到一个需求:Java 层和 C 层两个进程之间用Socket 通信。所幸Android Java 已经集成了 LocalServerSocket 类,利用该类可以很容易实现Java 层和 C 层进程间通信。1.Java层作为Socket Server /** * Create the server socket */ public voi
2015-04-14 15:49:51 2137 1
原创 Linux 多线程等待超时机制的实现:pthread_mutex_lock/pthread_cond_signal/pthread_mutex_unlock
最近在做一个项目,需要实现两个线程之间的等待超时机制。例如A线程等待B线程,需要实现等待超时机制。解决方案是利用条件变量实现。1. 条件变量 条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条
2015-04-08 20:41:59 7575
转载 Linux pthread 多线程编程必备
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用
2015-04-08 16:14:06 1366
原创 Android Runtime.getRuntime().exec() 使用方法
Android 可以通过Runtime.getRuntime().exec()方法来执行命令或者创建进程。1. Runtime.getRuntime().exec共有六个重载方法:public Process exec(String command)在单独的进程中执行指定的字符串命令。public Process exec(String [] cmdArra
2015-04-08 15:05:01 34503 1
原创 Android 源码Mac-OSX查看工具Sublime-Text2
Windows 电脑上可以用Source Insight查看android 源码,非常方便。但是最近换了MacBook,Mac-OS没有Source Insight,查找了一下,可以用Sublime-Text2 代替。Sublime-Text2 需要安装Package Control插件和CTags Package:一、安装Package Control插件 1.打开控制台
2015-04-02 20:12:09 5454 1
原创 Android 源码编译Linux内核时出现fatal error: linux/netfilter/xt_dscp.h: No such file or directory
最近在Mac OSX上编译android 4.4.2的源码,碰到了N多问题,最头疼的就是在编译过程中遇到如下错误,网上搜索几天都不得解,后来终于搞清楚了:1. 创建大小写敏感的磁盘镜像 在Mac下编译android的源代码需要一个大小写敏感(Case Sensitive)的分区格式如果你原来的分区不是HFS+一类大小写敏感的文件格式,那么最简单的办法就是新建一
2015-04-01 23:37:40 4836 1
android PackageManager 反射调用相关的类
2016-08-03
Cordova_android_demo
2016-01-21
WD412.exe驱动程序开发工具
2009-08-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人