Jack's Blog

Thinking will not overcome fear but action will.

Android 反混淆神器JEB2的使用简介

反混淆神器JEB2

Android 反混淆神器JEB2的使用简介 背景 我们在逆向Android应用的时候会使用 jd-GUI、jadx、Luyten等工具进行代码审查,但市面上大部分的应用是混淆过的,简单点的混淆会使类名,方法名变成诸如 a,b,c之类的。更有甚者会自定义混淆规则将类名,方法名混淆成藏文,蒙古文等“天书”(后面我会写一篇自定义混淆规则的文章)。如何反混淆则是今天所要介绍的 JEB2工具的...

如何使用Burpsuite抓取App的HTTPS数据

抓取App的HTTPS数据

如何使用Burpsuite抓取App的HTTPS数据 概述 Burp Suite是一个用于测试Web应用程序安全性的图形工具。该工具使用Java编写,由PortSwigger Web Security开发。 工具 Proxy - 它作为Web代理服务器运行,并且作为浏览器和目标Web服务器之间的中间人。这允许拦截,检查和修改在两个方向上传递的原始业务。 Scanner - ...

Android插件化之ClassLoader源码解析

ClassLoader源码解析

Android插件化之ClassLoader源码解析 Java代码会编译成.Class文件,程序运行在虚拟机上时,虚拟机需要把需要的Class加载进来才能创建实例对象并工作,而完成这一个加载工作的角色就是ClassLoader。 Android的Dalvik/ART虚拟机如同标准JAVA的JVM虚拟机一样,在运行程序时首先需要将对应的类加载到内存中。 ClassLoader...

JNI 中 C\C++ 反射调用Java方法

JNI 中 C\C++ 反射调用Java方法的基本使用

JNI 中 C\C++ 反射调用Java方法 反射一般分3个步骤: 1.加载class(字节码),获取class的对象。 2.获取对应的方法或属性。 3.修改属性,或执行方法。 关于java的反射可以去另一篇文章查看→传送门 本篇文章主要记录一下在JNI中用C/C++去反射调用java的方法。 关于env,在C和C++语言中调用方式是不同的,如下,本例...

Android Socket通信

UdpClient

Android Socket通信–UdpClient UdpClientConnecter package com.hadisi.socket; import android.os.Bundle; import android.os.Handler; import android.os.Message; import java.net.DatagramPacket; import j...

Android 线程池

Android 线程池的基本使用

Android 线程池 每个 Android 应用进程在创建时,会同时创建一个线程,我们称之为主线程,负责更新 UI 界面以及和处理用户之间的交互,因此,在 Android 中,我们又称之为 UI 线程。一个进程中 UI 线程只有一个,为了不造成界面卡顿、提高用户体验,我们势必要将一些耗时操作交由子线程来执行。 使用子线程的方式主要分两种: 直接使用 Thread 和 Runna...

Hook之Activity的启动拦截

应用内拦截以及系统全局拦截

Hook之Activity的启动拦截,应用内拦截以及系统全局拦截 为了更容易的理解,需要掌握JAVA的反射,动态代理技术,以及Activity的启动流程。 1、寻找Hook点的原则 1、Hook点,一般是分析源码来得到,而一般的Hook点都是静态变量或者是单例方法。 2、构造一个需要拦截的代理对象,需要的条件是代理的对象必须实现一个接口,其次就是需要获取到原始对象实例 2、寻找Ho...

Java静态代理以及动态代理

Java静态代理以及动态代理基本使用

Java静态代理以及动态代理 Java的代理模式在开发中经常使用,作为设计模式的一种,在很多场景下都有应用。 代理模式通常分为两种 静态代理:硬编码实现的代理类,在程序被编译成.class文件时代理类就已经存在。 动态代理:代理类在运行时产生,运用jdk的反射机制动态创建而成。 没有代理的世界 通常来说,代理模式是用来解耦的,可以把代理模式认为是加入了中介的 Produ...

Java反射机制

Java反射基本使用

JAVA反射 Java反射机制定义 Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。 反射机制的优点与缺点 为什么要用反射机制?直接创建对象不就可以了吗,...

SharedPreferences保存ListMap数据

数据保存

SharedPreferences保存List<Map<String, Object»数据 众所周知SharedPreferences是以key-vlues存储的xml文件格式,业务需求需要将List<Map<String, Object»数据格式的数据保存下来,以便下次读取显示,如果用sqlite来保存的话有点杀鸡用牛刀的感觉,毕竟数据量并不大。 下面记录一...