첫 번째 XPOSED 모듈 개발

더 이상 고민하지 않고 시작하겠습니다 ..!

이미지 2. 시작하기 — 코딩

STEP — 1 : Android Studio 열기

If 없는 경우 여기에서 다운로드 할 수 있습니다. 링크.

STEP — 2 : 활동 선택

새 Android 스튜디오 프로젝트를 만듭니다. (아래 이미지 참조)
이 자습서는 간단하게 유지하고 있습니다. 상태 표시 줄의 시계 색상 만 변경하기 때문에 활동을 만들 필요가 없습니다.
활동 없음을 선택하고 다음으로 이동합니다.

이미지 : 새 프로젝트-활동 선택

STEP — 3 : 프로젝트 구성

이미지 : 프로젝트 구성

애플리케이션의 이름과 패키지 이름을 지정합니다. 언어를 Java로 유지하십시오. Kotlin에 익숙하다면 그대로 사용하십시오. 이것은 일종의 ‘hello-world’앱 / 모듈 개발이므로 하드 코딩이 많지 않을 것입니다.
최소 API를 유지하고 있습니다. 레벨 15.
그런 다음 마침 버튼을 누르십시오.

STEP — 4 : build.gradle (앱) 수정 & 아래 종속성 추가 :

그런 다음 프로젝트를 동기화합니다.

STEP — 5 : manifest.xml 파일을 수정합니다.

애플리케이션 태그 안에 아래 메타 데이터 태그를 추가합니다.

이름은 xposedmodule이고 값은 true 여야합니다. 리소스를 비워 둡니다. 그런 다음 xposedminversion (이전 단계의 API 버전) 및 xposeddescription (모듈에 대한 매우 간단한 설명)에 대해 동일한 작업을 반복합니다.

STEP — 6 : 클래스 만들기 :

package com.myfirstxposedmodule;
public class MyModule {
}

이것은 향후 수정할 클래스입니다.

STEP — 7 : xposed_init 파일 생성 및 수정 :

이미지 : 프로젝트보기

디렉토리보기를 프로젝트보기로 변경합니다. 앱 > src > 기본으로 이동합니다. main을 마우스 오른쪽 버튼으로 클릭하고 새 > 디렉토리를 선택합니다.
이름 : assets

오른쪽 클릭 최근 생성 된 assets 디렉토리에서 새 > 파일을 선택합니다.
이름 : xposed_init (파일 형식을 묻는 경우 text 선택)

xposed_init 파일에 전체 이름을 추가합니다. 자바 클래스의. 즉, 우리의 경우는 다음과 같습니다.

com.myfirstxposedmodule.MyModule

Xposed 프레임 워크가 모듈을 식별하고 부팅시로드하는 방법입니다. 이 파일은로드 할 클래스를 프레임 워크에 알려주며 로그에서도 볼 수 있습니다.

STEP — 8 : MyModule 클래스 수정 :

package com.myfirstxposedmodule;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import de.robv.android.xposed.XposedBridge;
public class MyModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
}
}

IXposedHookLoadPackage 위에 표시된대로 handleLoadPackage 메소드를 구현하고 구현합니다.

이제 사용해 보겠습니다. handleLoadPackage 메소드에 로그 함수를 넣습니다.

XposedBridge.log("Loaded app: " + lpparam.packageName);

이렇게하면로드 된 모듈이 인쇄됩니다. 일반적으로 이러한 로그는 다음 파일에 기록됩니다. /data/data/de.robv.android.exposed.installer/log/debug.log (Xposed 설치 프로그램을 통해 쉽게 액세스 할 수 있음)

STEP — 9 : 코드 실행 :

이미지 : ‘app’실행 오류

직접 시도하는 경우 Android 스튜디오에서 실행하면이 오류가 발생합니다. 지금은 활동이 없기 때문에 괜찮습니다.

어쨌든 걱정하지 마세요. 해결책이 있습니다. 실행 구성을 편집하고 시작 옵션을 기본 활동에서 없음으로 변경하고 확인을 선택하면됩니다.

이미지 : 변경 실행 구성

이제 다시 실행 해보십시오 (Windows : Shift + F10).

기기에서 성공적으로 실행되면 Xposed Installer 앱의 모듈 목록에서이 모듈을 볼 수 있습니다. 아래 이미지와 같이 매니페스트 파일에 입력 한 설명 텍스트도 볼 수 있습니다.

이미지 : Xposed 모듈 목록

상자를 선택하여 해당 모듈을 활성화하고 기기를 재부팅하세요.재부팅 후 Xposed Installer 응용 프로그램을 열고 로그를 엽니 다 (경로 위에서 언급 한 로그 파일을 열 수도 있음). 다음과 같은 줄이 표시됩니다.

Xposed 모듈을 만들고 실행하는 방법을 알았으니 이제 상태 표시 줄의 코드를 살펴보고 자체 구현을 적용 할 수 있습니다.

p>

STEP — 10 : 상태 표시 줄 코드 살펴보기 :

이제 패키지). 아시다시피 Android는 오픈 소스 운영 소스이므로 코드의 내부 내용을 볼 수 있습니다. 이 링크에서 안드로이드의 소스 코드를 다운로드 할 수 있습니다. Android 버전 및 ROM에 따라 약간의 변경이있을 수 있습니다. 현재로서는 시계의 코드를 찾는 데에만 관심이 있습니다. com.android.systemui 패키지 어딘가에 Clock.java 클래스가 있으며이 클래스는 TextView를 확장합니다. 이를 TextView처럼 유사하게 처리 할 수 있습니다. 이것은 그 클래스에 대한 링크입니다. 이름이 updateClock() 인 상태 표시 줄의 시간을 업데이트하는 한 가지 방법이 있습니다. 아래 스 니펫을보십시오.

자, 우리가 원하는 것은 무엇입니까? 이 메서드가 실행될 때마다 코드를 실행하려고합니다. 다음 단계에서는 메소드 후킹이라고도합니다.

STEP — 11 : 메소드 후킹 :

XposedHelper는 몇 가지 도우미 메서드를 제공하는 클래스입니다. 필요한 도우미 메서드 중 하나는 String 클래스 로더에서 전체 클래스 이름을 가져 오는 findAndHookMethod입니다 (XC_LoadPackage.LoadPackageParam from handleLoadPackage), 추적하려는 메서드 이름 (이 경우 updateClock) StringXC_MethodHook 콜백 (단순한 콜백)에서. 아래는 우리의 코드입니다

위의 코드에서 iv id는 XC_MethodHook 인 익명 클래스 XC_MethodHook에 구현 한 두 가지 메서드가 있음을 알 수 있습니다. = “e43a7ee976″>

afterHookedMethod. 이름에서 알 수 있듯이 첫 번째는 hooked 메서드보다 먼저 실행되고 후자는 hooked 메서드 (이 경우 updateClock) 후에 실행됩니다. 인수 및 반환 유형에 대한 매개 변수는 MethodHookParam 인수로 처리됩니다. 하지만 지금은 상태 표시 줄의 시계 색상 만 변경하고 싶습니다. afterHookedMethod 만 있으면됩니다.

TextView 개체, param.thisObject에서 가져올 수 있습니다.이 개체는 서 this 키워드와 동일합니다. div id = “41633a64c2″>

클래스. 그런 다음 TextView로 캐스트 한 다음 해당 TextView 개체의 색상을 변경하고 내가 한 것처럼 텍스트를 수정할 수도 있습니다. :

STEP — 12 : 모듈 실행 :

코드를 실행하고 기기를 다시 재부팅합니다. 시계가 빨간색으로 표시되고 추가 한 그림 이모티콘 텍스트가 표시됩니다.

이미지 : 변경된 색상 상태 표시 줄의 시계

그게 다입니다 !! 재부팅이 안된다는 걸 알아! 하지만 당신은 자신 만의 Xposed 모듈을 만들었습니다. 좋지 않나요 ?? !!

Leave a Reply

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다