自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jltxgcy的专栏

追求卓越,成功会在不经意间追上你。

  • 博客(331)
  • 资源 (13)
  • 收藏
  • 关注

原创 Linux系统编程-fork

0x00    我们首先来最基本的fork使用,首先列代码,然后讲解。#include #include #include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do \ { \ perror(m); \ exit(EXIT_FA

2016-08-06 15:51:15 724

原创 Python编程入门

    0x00    python的两种编程形式:    1、交互式    2、脚本式,也分两种方式。    详见:http://www.runoob.com/python/python-basic-syntax.html。    0x01    Python有五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典)。    ...

2016-05-09 15:33:28 2607

原创 Android SO逆向-多重继承

0x00    这一节我们要讨论多重的汇编实现。    0x01     我们先直接看汇编代码:#include "com_example_ndkreverse7_Lesson7.h"#include #define LOG_TAG "lesson7"#define ALOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TA

2016-04-23 11:36:37 1911

原创 Android SO逆向-对象的继承和虚函数

0x00    这一节我们要讨论对象的继承和虚函数的汇编实现。    0x01    我们先直接看汇编代码:#include "com_example_ndkreverse6_Lesson6.h"#include #define LOG_TAG "lesson6"#define ALOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG,

2016-04-22 14:19:07 4035

原创 Android SO逆向-对象的拷贝构造函数

0x00    这一节我们主要讨论对象的拷贝构造函数的汇编实现。        0x01    我们直接看C++代码:     Test.h:#ifndef _TEST_H_#define _TEST_H_#include #define LOG_TAG "lesson5"#define ALOGD(...) ((void)__android_log_print(ANDROID_LOG_D

2016-04-21 09:45:17 3464

原创 Android SO逆向-对象的构造函数与析构函数

0x00    这一节我们主要讨论对象的构造函数和析构函数的汇编实现。    0x01    我们先直接看C++代码:#include "com_example_ndkreverse4_Lesson4.h"#include "Test.h"#include #define LOG_TAG "lesson4"#define ALOGD(...) ((void)__android_log_pr

2016-04-19 20:52:36 4132

原创 Android SO逆向-数组与指针

0x00    这一节主要分析一维数组、二维数组、数组指针和指针数组的汇编实现。    0x01    我们先直接看C++代码:#include "com_example_ndkreverse3_Lesson3.h"#include #define LOG_TAG "lesson3"#define ALOGD(...) ((void)__android_log_print(ANDROID_L

2016-04-18 11:09:39 2790

原创 Android SO逆向-全局变量和静态局部变量

0x00    这一节比较简单,主要分析全局变量,全局静态变量,静态局部变量的实现。      0x01    我们直接看代码。#include "com_example_ndkreverse2_Lesson2.h"#include #define LOG_TAG "lesson2"#define ALOGD(...) ((void)__android_log_print(ANDROID_L

2016-04-17 11:57:22 3432

原创 Android SO逆向-流程控制语句及表达式运算

0x00    在前一篇文章Android SO逆向-基本数据类型及函数的工作原理中,我们介绍了ndk的使用,这篇文章直接列出C++源码及对应的汇编代码。    0x01    在java层主要是调用native方法,现在列出java层的代码:    Lesson1.javapackage com.example.ndkreverse1;public class Lesson1 { sta

2016-04-17 10:02:34 2431

原创 Android SO逆向-基本数据类型及函数的工作原理

0x00    如果不熟悉ARM汇编的同学,请先阅读这两篇文章,常用ARM汇编指令,ARM子函数定义中的参数放入寄存器的规则。    0x01    这一节我们通过逆向Android SO文件,来理解C++基本数据类型,如int、float、bool、char、指针、引用、常量的ARM汇编形式。    还有理解C++函数调用,用ARM汇编是怎么实现的?参数如何传递,返回值怎么传?函数执行完毕后怎么

2016-04-16 10:40:06 3350 1

原创 关于Davlik解释器的一些思考

一直以来对Davlik虚拟机都有一些疑问:    1、最初被davlik解释执行的java代码是什么呢?    2、dalvik解释执行java代码时,如果遇到native代码(C/C++)怎么办呢?    3、如果native代码想调用java代码,davlik是怎么解释执行的呢?    4、Zygote进程fork出应用程序进程后,davlik是怎么解释执行ActivityThread类的ma

2016-03-25 18:24:56 1440

原创 一步一步学ROP之Android ARM 32位篇

0x00    本文仅解释说明蒸米大神一步一步学ROP之Android ARM 32位篇,读者应先阅读这篇文章,遇到问题再来看我这篇文章。   0x01    第一个问题:payload = 'A'*132 + p32(callsystemaddr),这个132是怎么来的?    要回答这个问题,我们需要把level6.c反汇编,level6.c代码如下: #include#include#i

2016-02-19 17:48:20 2697 1

原创 一步一步学ROP之linux_x86篇

0x00    本文仅解释说明蒸米大神一步一步学ROP之linux_x86篇,读者应先阅读这篇文章,遇到问题再来看我这篇文章。    阅读完这两篇文章后,我们会理解ROP(返回导向编程),DEP(堆栈不可执行),ASLR(内存地址随机化),Stack Protector(栈保护),Memory Leak。   0x01    第一个问题:为什么要构造成”A”*140+ret字符串,这个140是怎么

2016-02-19 11:16:13 4592 2

原创 百度全系APP SDK漏洞–WormHole虫洞漏洞

0x00    我们以百度地图v8.7.0为例来分析百度蠕虫漏洞,apk下载地址为https://github.com/jltxgcy/AppVulnerability/Baidu_Maps_v8.7.0.apk。    使用Android Killer来打开这个apk,Android Killer下载地址为http://pan.baidu.com/s/1jGQUzwa。    我们先讲述如何在代

2016-02-18 18:26:46 9391 1

原创 Android 中间人攻击

0x00    Android中间人攻击的思路就是劫持局域网中被攻击机器和服务器间的对话。被攻击机器和服务器表面上工作正常,实际上已经被中间人劫持。可以从一张图来明白这个过程。    受攻击主机发送的数据,首先经过了攻击者,从服务器返回的数据也经过攻击者,再发送给受攻击主机。   0x01    Android开源中间人攻击例子,请参考https://github.com/ssun125/Lanm

2016-02-17 16:48:42 5122

原创 使用NanoHttpd实现简易WebServer

0x00    在介绍使用NanoHttpd实现简易WebServer之前,我们首先熟悉下局域网Socket通信。一个Client工程,代码地址为https://github.com/jltxgcy/AppVulnerability/tree/master/MyClient。一个Server工程,代码地址为https://github.com/jltxgcy/AppVulnerability/tr

2016-02-17 16:16:32 9562 4

原创 Android WebView File域同源策略绕过漏洞浅析

0x00    我们首先讲一个webView这个方法的作用:webView.getSettings().setAllowFileAccessFromFileURLs(false);    为了讲解这个方法,我们还是看一个实际的例子。代码地址还是参考https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo。   

2016-02-17 10:53:27 7806 3

原创 Android WebView远程代码执行漏洞简析

0x00    本文参考Android WebView 远程代码执行漏洞简析。代码地址为,https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo。下面我们分析代码。       0x01    首先列出项目工程目录:    MainActivity.java的代码如下:public class MainActi

2016-02-16 20:17:39 5910

原创 Android APP漏洞挖掘

0x00     1、组件公开安全漏洞    参考Android 组件安全。    2、Content Provider文件目录遍历漏洞    参考Content Provider文件目录遍历漏洞浅析。    3、AndroidManifest.xml中AllowBackup安全检测    参考两分钟窃取身边女神微博帐号?详解Android App AllowBackup配置带来的风险。    4

2016-02-16 19:06:46 5651

原创 通过smali注入log和函数调用堆栈

0x00    smali注入log,看本文前,请大家先看Android安全–加强版Smali Log注入。    有几点要说明:    1、在上文中,crack.smali,并不是作者直接写的smali文件,而是先写java代码然后编译成dex,再用apktool把dex反编译成smali得到的。我们也可以用这种方法来注入我们自己

2016-02-04 10:59:46 4440 1

原创 Android程序反破解技术

0x1    对抗反编译可以大概分为以下几点:    1、对抗反编译工具,例如apktool、dex2jar等    2、对抗静态编译,分为代码混淆技术、NDK保护、apk加壳保护。    3、对抗动态调试,分为检测调试器、检测模拟器。    4、防止重编译,分为检查签名,校验保护。    更多相关内容请参考《Android软件安全与逆向分析》。   0x02   对抗反编译工具,例如dex2ja

2016-02-04 09:31:28 3768

原创 IDA动态调试Android的DEX文件

0x00    我们以阿里比赛第一题为例,来动态调试dex文件。参考IDA动态调试Android的DEX文件一文,首先AndroidManifest.xml里面android:debuggable="true"。    0x01    下面详细说步骤。    1、将classes.dex拖入IDA中。    2、选择Debugger->Debugger options->Set specific

2016-01-28 14:44:26 7807 2

原创 Android native反调试方式及使用IDA绕过反调试

0x00     为了避免我们的so文件被动态分析,我们通常在so中加入一些反调试代码,常见的Android native反调试方法有以下几种。     1、直接调用ptrace(PTRACE_TRACEME, 0, 0, 0),参考Android Native反调试。     2、根据上面说的/proc/$pid/status中TracerPid行显示调试程序的pid的原理, 可以写一个方法检查

2016-01-28 11:36:49 18920 7

原创 ida动态调试so,在init_array和JNI_ONLOAD处下断点

0x00    如何在JNI_ONLOAD下断点,参考安卓逆向学习笔记(5) - 在JNI_Onload 函数处下断点避开针对IDA Pro的反调试。最好使用模拟器调试,确保 Attach to process后,对应进程在DDMS中出现小红蜘蛛。    下面将如何在init_array下断点,首先要找到so的init_array端,把so拖入ida,然后按Crtl+s,会出现该so的所有段。如下

2016-01-28 09:55:26 6992 1

原创 DexHunter脱壳神器分析

0x00    这篇文章我们分析Android脱壳神器DexHunter的源代码。DexHunter作者也写了一篇介绍它的文章从Android运行时出发,打造我们的脱壳神器。DexHunter源代码位于https://github.com/zyq8709/DexHunter。    0x01    DexHunter 实现中,只需要修改一处文件:dalvik\vm\native\dalvik_sy

2016-01-26 18:25:57 10388 7

原创 运行时动态修复dex

0x00    在本文中,我们首先分离

2016-01-26 14:24:24 4097 4

原创 DexClassLoader和PathClassLoader类加载机制

0x00    在DexClassLoader和PathClassLoader加载Dex流程一文中,我们分析了dex文件如何形成了DexFile结构体。本文中讲解类加载机制,实际上就是生成ClassObject对象。    我们以DexClassLoader为例,讲解类加载机制,PathClassLoader是一样的。    我们在加载类时通常会调用loadClass,那么我们就从loadClas

2016-01-21 20:29:55 3735

原创 DexClassLoader和PathClassLoader加载Dex流程

0x00    在上一篇文章apk安装和优化原理,在最后我们分析了DexClassLoader和PathClassLoader的构造函数的不同。    PathClassLoader最后调用的是new DexFile(pathFile),而DexClassLoader调用的是DexFile.loadDex(dexPathList[i], outputName, 0)。        0x01

2016-01-21 12:52:05 8214 1

原创 apk安装和优化原理

0x00    apk安装的方式有:    1、开机启动时安装    2、通过adb install 或者在手机中点击apk,进行界面安装。    0x01    开机启动后在system_server中调用PackageManagerService.main,随着调用的深入,循环对每个apk都调用scanPackageLI方法,这个函数提取apk的AndroidManifest.xml里面的内容

2016-01-20 20:25:58 3991

原创 Android加壳native实现

本例仅在Android2.3虚拟机跑通过,如果要适配其他机型,请自行研究,这里只是抛砖引玉。    0x00    在Android中的Apk的加固(加壳)原理解析和实现,一文中脱壳代码都写在了java层很容易被识别出来,很多需求需要把脱壳的程序转移到native层,其实转移的思路也很简单,就是在native层通过JNI调用Java层代码。    0x01 public class Prox

2016-01-19 19:50:21 3851 2

原创 Android 静态分析smail

即前篇文章Android 静态分析 smali,我一直在思考以下几个问题:     1、子类使用的父类中的方法,那么对应的smail是invoke-super还是invoke-virtual呢?对应的类是父类还是子类呢?     解释:invoke-direct {p0}, Landroid/app/Activity;->()V,这里所说的父类还是子类指的是invoke参数后面跟着的类,在这个例子

2015-09-28 11:01:31 1869

原创 Android系统启动流程

我们先来看一张图,它清晰的说明了整个Android系统的启动流程,参考Android内核开发:图解Android系统的启动过程。          第一阶段:Android设备上电后,首先会从处理器片上ROM的启动引导代码开始执行,片上ROM会寻找Bootloader代码,并加载到内存。(这一步由“芯片厂商”负责设计和实现)     第二阶段:Bootloader开始执行,首先负责完成硬件的初始化

2015-09-22 18:46:51 2060 1

原创 Home界面的启动

继上篇文章Launcher进程的启动,我们继续分析Home界面的启动。public final class ActivityThread { ...... public static final void main(String[] args) { SamplingProfilerIntegration.start(); Process.setArgV0(""); Loope

2015-09-22 16:18:00 2326 2

原创 Launcher进程的启动

继System进程的启动流程第二部分之后,我们来分析Launcher进程的启动。public class Process { ...... public static final int start(final String processClass, final String niceName, int uid, int gid, int[] gids, int debugFl

2015-09-21 20:23:28 2858

原创 System进程的启动流程第二部分

继System进程的启动流程第一部分,我们接着分析com.android.server.SystemServer的main函数。如下:public class SystemServer { ...... native public static void init1(String[] args); ...... public static void main(St

2015-09-21 17:39:52 1735

原创 System进程的启动流程第一部分

承接上篇文章Zygote进程的启动流程,我们继续分析System进程的启动流程。     Zygote进程在启动的过程中,除了会创建一个Dalvik虚拟机实例之外,还会将Java运行时库加载到进程中来,以及注册一些Android核心类的JNI方法来前面创建的Dalvik虚拟机实例中去。注意,一个应用程序进程被Zygote进程孵化出来的时候,不仅会获得Zygote进程中的Dalvik虚拟机实例拷贝,

2015-09-17 15:28:06 2099

原创 Zygote进程的启动流程

Zygote进程时由Android系统的第一个进程init启动起来的。init进程时在内核加载完成之后就启动起来的,它在启动的过程中,会读取根目录下的一个脚本文件init.rc,以便可以将其他需要开机启动的进程也一起启动起来。     Zygote进程在脚本文件init.rc中的启动脚本如下:service zygote /system/bin/app_process -Xzygote /syst

2015-09-17 09:40:14 1941

原创 从头到尾详解Android Studio

1、下载Android Studio     如果你已经安装了eclipse,并且已经安装了Android SDK,那么请只下Android Studio IDE only,下载地址:http://tools.android.com/download/studio/canary/1-3-1。     方便大家下载,附上百度网盘的链接,是windows的版本,点击打开链接。     2、然后执行下载

2015-09-10 17:01:44 2973 2

原创 Android 组件安全

1、Activity、Service、BroadcastReceiver、ContentProvider是Android的四大组件,他们的安全性是非常重要的。四大组件的安全漏洞主要集中在是否可以被外部调用,外部调用是否存在风险。     四大组件是否可以被外部调用,决定因素是在AndroidManifest.xml里面定义的四大组件的标签export的布尔值。如下:<activity

2015-09-09 11:09:21 4466 5

原创 Android中的权限管理(基于Permission ProtectionLevel)

1、什么是protectionlevel呢?      我们经常在AndroidManifest中使用权限,如果我们想让应用程序可以发短信,那么应该这样写:       那么这个权限的定义是在哪里定义的呢?如下:      frameworks/base/core/res/AndroidManifest.xml<permission android:name="android.permission

2015-09-08 16:53:21 23322 4

SO hook技术汇总.pdf

SO hook技术汇总

2016-08-16

Android so加载深入分析.pdf

Android so加载深入分析

2016-08-14

NDKPLT.zip

csdn博客用的工程

2016-08-14

libPLTUtils.so

libPLTUtils.so,用于博客讲解。

2016-08-14

trace_anti_debug.zip

反调试

2016-08-13

Android Inline Hook原理图

Android Inline Hook原理图

2016-08-13

ARM Architecture Reference Manual

ARM Architecture Reference Manual

2016-08-13

压缩SDK demo

使用命令java -jar ApkCompress.jar -a CompressDemo.apk 出现错误提示对话框,我是在ubuntu下开发android,已经安装java虚拟机和eclipse,还有android sdk。 使用命令后会生成一个CompressDemo的文件夹里面放着所有的so,还有porting.log(大小为0)。

2014-08-01

CrackApk.zip

分析请见http://blog.csdn.net/jltxgcy/article/details/22670651

2014-03-31

AsyncTaskDemo

介绍了AsyncTask的使用,及源码分析。线程池,有返回值的线程。

2013-08-26

android_传智博客8天视频教程下载地址

android_传智博客8天视频教程。非常不错。

2013-06-28

android_豆瓣客户端_视频下载地址

android_豆瓣客户端_视频,传智博客主讲,很不错。

2013-06-28

android_jni_ndk视频下载地址

传智博客主讲,android jni ndk相关视频。百度网盘地址分享。

2013-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除