2017-12-27 15 views
0

Android의 기본 클래스 로딩을 가로 채고 조건부로 클래스 로딩을 피할 수 있습니까?Android 차단 클래스 로딩

내 동기는 안드로이드의 기본 클래스 로딩 프로세스를 차단하고

if (!fooScope) { 
    throw IllegalStateException("Trying to load class from FooScope"); 
} 

나는 클래스에서로드되는 위치를 변경하려는 있지 않다과 같은 조건에 따라 클래스, 뭔가를로드하지 않도록,하지만 잘하도록하는 것입니다 어떤 클래스가 어떤 시점에로드 될 수 있는지에 대한 세분화 된 컨트롤. 엄격한 클래스 로딩. 이 경우 특정 조건이 충족 될 때까지로드되지 않아야하는 클래스는로드되어서는 안됩니다. 나는 이것을 달성하기 위해 클래스 로딩을 인터셉트 할 수있는 방법을 찾고있다.

답변

0

아마도 어떤 종류의 Hooking 라이브러리를 사용해야 할 것입니다. 단지 안드로이드까지 지원이 라이브러리 (https://github.com/cmzy/ZHookLib) 같은 4.4

다음 모든로드 된 클래스를보기 위해 ClassLoader.class 의로 loadClass (문자열 이름) 메소드를 연결해야합니다.

하지만 여전히 클래스가로드되는 순서에 문제가 있습니다. 당신이 클래스 로더의 후크로 loadClass을했습니다 일단 당신이 당신이 좋아하는 일을 할 수 있어야한다

public class MyApplication extends Application { 
    static { 
     // code in static block is executed when the class is loaded 
     Set<Unhook> unhooks2 = ZHook.hookAllMethods(ClassLoader.class, "loadClass", new MethodHook() {...}); 
    } 

.. 처음로드하지만 확실하지 메신저 수 있습니다 응용 프로그램을 확장하는 클래스에서 그것을 시도 할 수 있습니다. 하나 이상의 ClassLoader가 있으며 예외를 throw하면 어떤 일이 발생할지 확실하지 않습니다.

도움이 되었기를 바랍니다.