Commit e7112454 authored by swift_gan's avatar swift_gan

tweak project struct

parent eb548da8
apply plugin: 'java-library'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
package com.swift.sandhook.wrapper;
package com.swift.sandhook.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
package com.swift.sandhook.wrapper;
package com.swift.sandhook.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
package com.swift.sandhook.wrapper;
package com.swift.sandhook.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
package com.swift.sandhook.wrapper;
package com.swift.sandhook.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
package com.swift.sandhook.wrapper;
package com.swift.sandhook.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
package com.swift.sandhook.wrapper;
package com.swift.sandhook.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
......@@ -2,6 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.swift.sandhook">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
......
......@@ -12,6 +12,8 @@ import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import com.swift.sandhook.test.Inter;
import com.swift.sandhook.test.InterImpl;
import com.swift.sandhook.test.TestClass;
import com.swift.sandhook.wrapper.HookErrorException;
import com.swift.sandhook.wrapper.HookWrapper;
......@@ -23,7 +25,7 @@ import java.lang.reflect.Method;
public class MainActivity extends AppCompatActivity {
// Used to load the 'native-lib' library on application startup.
Inter inter;
@Override
protected void onCreate(final Bundle savedInstanceState) {
......@@ -64,7 +66,22 @@ public class MainActivity extends AppCompatActivity {
Log.e("dd", str.a + "");
inter = new InterImpl();
new Thread(new Runnable() {
@Override
public void run() {
inter.dosth();
inter = new Inter() {
@Override
public void dosth() {
Log.e("dosth", hashCode() + "");
}
};
}
}).start();
inter.dosth();
}
public static Field getField(Class topClass, String fieldName) throws NoSuchFieldException {
......@@ -88,6 +105,12 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onPause() {
super.onPause();
inter = new Inter() {
@Override
public void dosth() {
Log.e("dosth", hashCode() + "");
}
};
}
public static int methodBeHooked(int a, int b) {
......
......@@ -2,7 +2,6 @@ package com.swift.sandhook;
import android.app.Application;
import com.swift.sandhook.testHookers.AbsHooker;
import com.swift.sandhook.testHookers.ActivityHooker;
import com.swift.sandhook.testHookers.CtrHook;
import com.swift.sandhook.testHookers.CustmizeHooker;
......@@ -11,6 +10,8 @@ import com.swift.sandhook.testHookers.LogHooker;
import com.swift.sandhook.testHookers.ObjectHooker;
import com.swift.sandhook.wrapper.HookErrorException;
import dalvik.system.DexClassLoader;
public class MyApp extends Application {
@Override
public void onCreate() {
......@@ -21,8 +22,19 @@ public class MyApp extends Application {
LogHooker.class,
CustmizeHooker.class,
ActivityHooker.class,
ObjectHooker.class,
AbsHooker.class);
ObjectHooker.class);
} catch (HookErrorException e) {
e.printStackTrace();
}
try {
ClassLoader classLoader = getClassLoader();
DexClassLoader dexClassLoader = new DexClassLoader("/sdcard/hookers-debug.apk",
getCacheDir().getAbsolutePath(), null, classLoader);
Class absHookerClass = Class.forName("com.swift.sandhook.hookers.AbsHooker", true, dexClassLoader);
SandHook.addHookClass(absHookerClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (HookErrorException e) {
e.printStackTrace();
}
......
package com.swift.sandhook.test;
public interface Inter {
void dosth();
}
package com.swift.sandhook.test;
import android.util.Log;
public class InterImpl implements Inter {
@Override
public void dosth() {
Log.e("dosth", "sasa");
}
}
package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
@HookClass(Runnable.class)
public class AbsHooker {
@HookMethod("run")
public static void onRun(Object thiz) {
Log.e("AbsHooker", "Runnable hook success ");
onRunBackup(thiz);
}
@HookMethodBackup("run")
public static void onRunBackup(Object thiz) {
onRunBackup(thiz);
}
}
......@@ -4,10 +4,10 @@ import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
import com.swift.sandhook.wrapper.MethodParams;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.MethodParams;
import java.lang.reflect.Method;
......
......@@ -3,10 +3,10 @@ package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.test.TestClass;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
import com.swift.sandhook.wrapper.MethodParams;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.MethodParams;
@HookClass(TestClass.class)
public class CtrHook {
......
......@@ -3,10 +3,10 @@ package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.MainActivity;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
import com.swift.sandhook.wrapper.MethodParams;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.MethodParams;
import java.lang.reflect.Method;
......
......@@ -3,9 +3,9 @@ package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.test.TestClass;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
@HookClass(TestClass.class)
public class JniHooker {
......
......@@ -2,10 +2,10 @@ package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
import com.swift.sandhook.wrapper.MethodParams;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.MethodParams;
@HookClass(Log.class)
public class LogHooker {
......
......@@ -2,9 +2,9 @@ package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
@HookClass(Object.class)
public class ObjectHooker {
......
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
compileOnly project(':annotation')
}
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.swift.sandhook.hookers" />
package com.swift.sandhook.hookers;
import android.util.Log;
import com.swift.sandhook.annotation.HookReflectClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
@HookReflectClass("com.swift.sandhook.test.Inter")
public class AbsHooker {
@HookMethod("dosth")
public static void ondosth(Object thiz) {
Log.e("AbsHooker", "dosth hook success ");
ondosthBackup(thiz);
}
@HookMethodBackup("dosth")
public static void ondosthBackup(Object thiz) {
ondosthBackup(thiz);
}
}
<resources>
<string name="app_name">hookers</string>
</resources>
......@@ -36,5 +36,6 @@ android {
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(include: ['*.jar'], dir: 'libs')
api project(':annotation')
}
......@@ -3,6 +3,12 @@ package com.swift.sandhook.wrapper;
import android.text.TextUtils;
import com.swift.sandhook.SandHook;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.HookReflectClass;
import com.swift.sandhook.annotation.MethodParams;
import com.swift.sandhook.annotation.MethodReflectParams;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
......
include ':app', ':hooklib'
include ':app', ':hooklib', ':hookers', ':annotation'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment