안드로이드의 자기 조립. 기성 펌웨어에서 직접 조립하는 방법. 안드로이드, DIY 펌웨어 모드

안녕하세요 하브르입니다!

몇 년 전 제가 처음 Android를 접했을 때 직장 동료로부터 Android가 수정된 펌웨어나 직접 만든 펌웨어를 설치할 수 있는 기능을 제공한다는 말을 들었습니다. 솔직히 그때는 그것과는 거리가 멀었습니다. 그리고 반년 전까지만 해도 나는 그런 것에는 거의 관심이 없었습니다. 나는 마음 속 깊이 확신했습니다. 제조업체가 하는 일은 이미 정상적인 사용을 위한 것이었습니다.

공장 설정으로 인해 Google, Skype, Facebook 및 기타 애플리케이션의 사용이 금지된 중국에서 휴대폰을 구입했을 때 실망감을 느꼈을 때를 상상해 보십시오. 원칙적으로는 눈감는 것이 가능했지만 휴대 전화에서 Google 계정을 사용할 필요가 없었을 때는 무슨 일이 있어도 반드시 알아 내겠다고 약속했습니다.

반년이 지났고 내 맞춤형 펌웨어가 전 세계에서 성공적으로 사용되고 있습니다.

이 기사 시리즈에서는 Android용 역프로그래밍 방법, 패치 구현, 조정 및 모드 방법에 대해 설명합니다.

전문

그래서! 먼저 사용할 개념을 정의해 보겠습니다. 주어진기사. 그러나 일반적인 이해는 매우 다를 수 있습니다.

반점- 프로그램 알고리즘을 수정하기 위해 기존 프로그램 코드를 변경하거나 교체합니다.
모드- 원칙적으로 알고리즘을 변경하지 않고 기존 프로그램 코드에 추가 기능을 추가합니다.
비틀기- 시스템 매개변수에 대한 접근을 용이하게 하기 위한 프로그램 기능 개선.

또한 모든 예는 HTC 휴대폰에 대해 촬영되었지만 이것이 이 정보를 다른 휴대폰에서 사용할 수 없다는 의미는 아닙니다.

환경 준비

이 소프트웨어 또는 해당 소프트웨어를 사용하는 방법에 대한 자세한 지침 없이도 할 수 있습니다. 이 기사에 관심이 있고 여기까지 읽었다면 이미 숙련된 ​​사용자이고 이 영역을 사용해 보거나 적어도 실험해 본 경험이 있기를 바랍니다. Habré와 마찬가지로 공개 도메인에는 많은 지침, 기사 및 테스트 결과가 있습니다. 또한 일부 용어를 설명하지 않고 수행하겠습니다. 그렇지 않으면 기사가 매우 길고 지루해질 것입니다. 요점만 쓰겠습니다. 정말 오랜만에 수요일이 되셨을 것 같아요. 그렇지 않은 경우 다운로드하여 설치하는 것이 좋습니다.

1 . 안드로이드 SDK. 안드로이드용 애플리케이션 개발 환경입니다. 수정하려면 프로그램 코드를 반드시 확인해야 합니다. 개발 환경은 우리가 사용할 수 있는 최고의 환경입니다.
2 . 안드로이드 키친. 이 유틸리티를 사용하면 공식 또는 비공식 펌웨어의 시스템 파티션 이미지로 작업할 수 있습니다.
3 . JD-GUI. 자바 코드 디컴파일러. 나는 이것이 사용 편의성 측면에서 최고의 디컴파일러라는 점을 즉시 지적하고 싶습니다.
4 . DJ 자바 디컴파일러. Java 언어 프로그램 코드의 또 다른 디컴파일러 또는 디스어셈블러라고도 합니다. 사용하기 편리하지는 않지만 JD-GUI가 가끔 이해하지 못하는 코드를 구문 분석합니다.
5 . 스말리. 또 다른 디스어셈블러이지만 이번에는 dalvik 코드입니다. smali는 분해에 필요하고 backsmali는 코드 조립에 필요합니다.
6 . dex2jar. Dalvik 코드 실행 파일을 변환하는 유틸리티입니다.

펌웨어 변환

물론 제조업체에서 휴대폰에 탑재한 펌웨어는 전력 소비를 줄이기 위해 최적화되어 있습니다. 펌웨어를 수정하려면 코드를 수정할 수 있는 형식으로 변환해야 합니다. 이를 위해 Android Kitchen이 사용됩니다. 물론 제가 바로 이 "주방"을 발견할 때까지 제가 했던 것처럼 손으로 할 수 있습니다. 전화기에서 시스템 영역을 제거하고 환경을 설치하고 DEODEX 펌웨어를 만드는 방법을 인터넷에서 읽을 수 있습니다. 아직 이해하지 못하는 내용이 있다면 충분한 경험을 쌓을 때까지 이 기사를 읽는 것을 미루는 것이 좋습니다.

펌웨어가 최적화된 버전(ODEX - 내 메모리가 올바르게 작동하는 경우 최적화된 dalvik 실행 코드)에서 DEODEX(즉, 최적화되지 않음)로 변경되면 모든 실행 파일을 수정할 준비가 됩니다.

직접 수정

패치 생성
이미 말했듯이 내 휴대전화는 처음에 Google 사용이 금지되었습니다. 글쎄요, 무슨 일이 있어도 Playstore에 갈 수 없고, 계정을 설정할 수도 없고, 전화번호부가 실제로 동기화되지도 않습니다. 왜 그런 안드로이드가 필요한가요? 기기 자체의 로그캣을 한참 뒤져보니 구글 사용이 금지되어 있다는 항목을 발견했습니다. Android의 가장 불편한 점은 로그를 볼 수 있지만 어떤 시스템 애플리케이션이 로그를 생성하는지 알 수 없다는 것입니다. 내 다리가 어디에서 왔는지 알아내기 위해 모든 시스템 애플리케이션을 분해된 Java 코드로 정리해야 했습니다. 시간이 많이 걸렸지만, 올바른 코드를 분석하고 찾을 때 했던 작업을 아직도 사용하고 있습니다. 이러한 도구를 얻는 단계는 다음과 같습니다.
1 . 모든 펌웨어의 DEODEX 만들기
2 . 새로운 DEODEX 펌웨어를 조립하고 휴대폰에 플래시해야 합니다. 이것이 어떻게 수행되는지는 다른 기사의 주제입니다.
3 . /system/framework에 있는 각 파일에서classes.dex 파일을 추출하고 dex2jar을 사용하여 JAR로 변환합니다.
4 . JD-GUI에서 각 결과 JAR을 열고 소스 코드에 다시 저장합니다.
5 . 아카이브에서 소스 코드의 압축을 풉니다.

결국 /system/framework에 JAR 파일 수 만큼의 폴더가 생겼고, 각 폴더에는 Java 소스 코드 구조가 있었습니다.
간단한 조작을 통해 logcat에서 항목이 생성된 위치를 빠르게 찾아냈습니다.

각 사례는 별도의 이야기이기 때문에 금지의 전체 논리를 고려하지 않을 것입니다. 검사가 수행된 위치를 찾고, 알고리즘의 블록 다이어그램을 머리 속에 구축하고, 알고리즘을 약간 "망칠" 수 있도록 어디로 가야 하는지 이해하기까지 두 시간을 소비해야 했습니다.

그것은 간단하다는 것이 밝혀졌습니다. 사전 설정된 상수를 기반으로 연락 시 전화가 중국 제품인지 여부에 응답하는 서브루틴이 있습니다.

코드는 파일에 있었어요 HTCExtension.jar, 이 서브루틴을 포함하는 클래스는

원본 파일의 압축 풀기 및 분석
1 . 먼저, 필요한 코드 부분을 담당하는 원본 DEODEX JAR 파일을 가져와야 합니다. 우리의 경우 HTCExtension.jar.
2 . 아무 아카이버로 열고 거기에서classes.dex를 꺼냅니다.
3 . dex2jar 변환기를 사용하여 JAR 파일로 변환합니다. 명령: dex2jar.bat class.dex
4 . JD-GUI에서 결과로 생성된classes_dex2jar.jar 파일을 엽니다.
5 . 예, 대부분의 경우 JD-GUI는 코드를 원본과 다르게 디컴파일합니다. 이해할 수는 있지만 읽기는 쉽습니다. 소스 코드에서 서브루틴이 프로젝트 매개변수와 펌웨어 언어 플래그를 확인하는 것을 볼 수 있습니다. 불행한 경우에는 TRUE가 반환됩니다.
public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) true를 반환합니다.
6 . 패치를 만들려면 Dalvik 코드 자체를 분해해야 합니다. 이를 위해 baksmali를 사용합니다. 가장 편리한 방법은 별도의 폴더를 만들고 거기에 세 개의 파일을 함께 넣는 것입니다. HTCExtension.jar, smali.jar그리고 baksmali.jar. java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar 명령을 입력합니다.

이것은 Android 버전에 대한 API입니다. JB의 경우 16입니다.
- 모든 펌웨어 프레임워크가 위치한 폴더입니다.

내 경우에는 명령이었습니다
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . 새로 생성된 폴더에 HTCExtension 폴더가 나타나고 그 안에 Dalvik 코드가 포함된 파일이 나타납니다.
8 . 경로를 따라 파일 찾기 \com\htc\util\contacts\BuildUtils$Customization.java코드를 살펴보세요.
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xd8 if-eq v1 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;-> Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq v1, v2, :cond_13 .line 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto:goto_13 .end 방법
9 . 무섭지 않나요? 명확한 것은 없습니다. 하지만 이는 해결 가능한 문제입니다. 자신만의 패치 몇 개를 만들어 경험을 쌓은 후에는 타사 도구 없이도 코드를 쉽게 수정할 수 있습니다. 우리의 경우 이 코드에서는
.prologue const/4 v0, 0x1은 변수 v0에 값 1, 즉 TRUE를 할당합니다. 그런 다음 모든 종류의 확인이 있으며 전화기가 중국어가 아닌 경우 변수 값이 변경됩니다.
.line 297 const/4 v0, 0x0 goto:goto_13
10 . 러시아 민주주의의 아버지를 구하는 가장 쉬운 방법은 코드를 다음과 같이 변경하는 것입니다.
.prologue const/4 v0, 0x0 , 즉 변수 값을 1에서 0으로 변경합니다. 즉, 무슨 일이 있어도 FALSE 값이 항상 반환되고 JD-GUI에서 코드는 public static처럼 보입니다. boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && ( 2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) false를 반환합니다.
11 . 예, 그 방법은 효과가 있을 것입니다. 하지만 우리는 이번에는 쉬운 방법을 찾고 있지 않습니다. 둘째, 그다지 아름답지는 않습니다. 나는 다음과 같은 코드를 원합니다
공개 정적 부울 isChina() ( false 반환; )
12 . 이 소스 코드에 대한 Dalvik 코드를 어떻게 얻을 수 있나요? 초보자를 위해 우리는 약간의 트릭을 할 것입니다.

Dalvik 코드 생성
1 . 안드로이드 SDK를 엽니다.
2 . 새 프로젝트를 만들고 유일한 테스트 클래스에 다음 코드를 작성합니다.
패키지 ru.habrahabr.test; 공개 클래스 테스트( public static boolean isChina() ( return false; ) )
3 . 프로젝트를 컴파일한 다음 작업 공간에서 조립된 애플리케이션을 가져옵니다.
4 . JAR 파일을 제거한 폴더에 조립된 애플리케이션을 넣습니다.
5 . java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk 명령을 입력합니다.
6 . 새로 빌드된 애플리케이션을 Dalvik 코드로 분해했습니다.
7 . test.smali 파일을 열고 거기에 있는 코드를 확인하세요.
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end 메소드
8 . 이제 패치 코드가 준비되었습니다.
패치 롤링
1 . Dalvik 코드는 원본 소스 파일의 코드 줄을 나타내는 마커로 가득 차 있습니다. 이는 프로그램에 오류가 있는 경우 표시할 때 필요합니다. 코드는 줄을 지정하지 않고도 잘 작동합니다.
2 . 줄 번호가 있는 줄을 삭제하고, 메소드(서브루틴)를 복사하여 교체합니다. \com\htc\util\contacts\BuildUtils$Customization.java파일.
.method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end 메소드
3 . 파일을 저장합니다. 예, Notepad++ 또는 EditPlus와 같은 일반 편집기가 필요하다는 것을 잊어버렸습니다. 누가 어느 것을 좋아합니까?
패치된 JAR 파일 컴파일 및 빌드
1 . backsmali를 사용하여 JAR 파일을 제거했으며 이제 다시 정리해야 합니다.
2 . java -Xmx512m -jar smali.jar -a 16 HTCExtension -oclasses.dex 명령을 입력합니다.
3 . Classes.dex 파일이 폴더에 나타납니다.
4 . 다시 열림 HTCExtension.jar아카이버로 파일을 만들고 그 안에 있는 기존 파일을 교체하세요. 클래스.dex방금 만든 것입니다.
5 . 그게 다야, 우리 것 HTCExtension.jar수정된 프로그램 코드가 포함되어 있습니다.
원본 파일을 패치된 파일로 교체
일반적으로 일반 사용자를 위해 특수 스크립트가 생성되며 복구를 통해 대체됩니다. 그러나 우리는 이것에 관심이 없습니다. 첫째, 길고 지루하며 둘째, 우리는 경험이 풍부한 사용자이므로 약간의 미묘함을 감당할 수 있습니다.

1 . 이미 DEODEX 펌웨어가 있고 루트 액세스 권한이 있는 경우 현재 작업 파일을 다음 명령으로 바꿀 수 있습니다.

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb 쉘 su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar =/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [이메일 보호됨]@classes.dex 재부팅

첫 번째 명령은 패치된 파일을 플래시 드라이브에 업로드합니다.
두 번째 명령은 쉘을 엽니다
세 번째 명령은 루트 액세스를 제공합니다
네 번째 명령은 시스템을 읽기/쓰기 모드로 마운트합니다.
다섯 번째 명령은 파일의 백업 복사본을 만듭니다.
6번째 명령은 기존 파일을 새로 패치된 파일로 덮어씁니다.
7번째 명령은 권한을 구성합니다
8번째 명령은 캐시를 삭제합니다
9번째 명령은 장치를 재부팅합니다.

2 . 여기까지 읽어주셔서 감사합니다. 이제 얼마 남지 않았습니다.
3 . 재부팅하면 새 패치 코드가 적용됩니다.
4 . 코드가 작동하지 않거나 오류가 발생하면 간단한 조합을 사용하여 백업 복사본을 반환할 수 있습니다.
adb 쉘 su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [이메일 보호됨]@classes.dex 재부팅

발문

네, 어떤 사람들은 이 글이 너무 구체적이라고 생각했고, 어떤 사람들은 이해하기 어렵다고 느꼈고, 어떤 사람들은 쓸모없다고 생각했습니다. 나는 모든 것이 실제로 어떻게 보이는지에 대한 심층적인 세부 사항과 그림을 의도적으로 피했습니다. 첫째, 이 작업은 감사할 일이 아니며 더 많은 질문을 야기할 뿐입니다. 둘째, 나는 포럼에서 많은 사용자들이 휴대폰을 망쳤다고 불평하는 것을 보고 싶지 않습니다.

다음 기사에서는 Tweeks를 만드는 방법을 알려 드리겠습니다. 기본 전화 도구를 사용하여 전화 통화 자동 녹음을 사용하는 예가 있습니다. 관심을 가져주셔서 감사합니다.

추신 명확하지 않거나 혼란스러운 부분이 있으면 질문해 주세요. 언제든지 기꺼이 답변하고 설명해 드리겠습니다.

많은 사용자가 휴대폰이나 태블릿에 Android 운영 체제를 다시 설치하는 문제에 직면해 있습니다. 사실 이 시스템은 다른 시스템보다 바이러스 공격에 더 취약합니다.

강력한 바이러스 백신 프로그램이 없으면 Android 기기 소유자는 알 수 없는 소스에서 다양한 콘텐츠를 다운로드하여 시스템을 위험에 빠뜨립니다.

물론 가제트를 완전히 작동 불능 상태로 만드는 것은 매우 어렵지만 불행한 Android를 완전히 "파괴"하는 것은 가능합니다. 그런 다음 장치를 플래시하는 문제가 발생하며 이 기사에서 직접 수행하는 방법을 알려 드리겠습니다.


컴퓨터를 사용하는 방법과 사용하지 않는 방법 두 가지가 있습니다. 후자의 옵션을 선호하는 경우 이러한 재설치를 위한 전제 조건은 "OS" 자체의 설치 파일이 메모리 카드에 직접 위치하기 때문에 메모리 카드가 있어야 한다는 것입니다. 그럼, 그 과정을 간단히 살펴보겠습니다.

컴퓨터를 사용하여 깜박임

이 문제에 대해 최소한 약간의 경험이 있으면 깜박이는 것이 더 낫다는 점을 모든 사용자에게 경고하고 싶습니다. 그렇지 않으면 장치를 서비스 센터로 가져가도 여전히 비용을 지불한다는 사실로 귀결됩니다. 작품. 하지만 결심했다면 기기를 충전하는 것부터 시작하세요. 절반 이상 충전되어 있어야 합니다. 추가 조치는 휴대폰이나 태블릿 모델에 따라 다릅니다.

Android 용 펌웨어를 직접 만드는 방법

장치의 펌웨어 버전을 찾아야 합니다. 인터넷에는 이에 필요한 모든 것이 있습니다. 펌웨어와 함께 바이러스 프로그램이 PC에 다운로드되는 것을 방지하려면 신뢰할 수 있는 사이트를 이용하는 것이 좋습니다. 그러한 사이트 중 하나가 4pda입니다.

여기서는 펌웨어뿐만 아니라 필요한 "플래싱 프로그램"도 찾을 수 있습니다. 예를 들어 Samsung의 경우 Odin 프로그램이고 Sony Ericsson의 경우 PC Companion이며 장치에 맞는 유틸리티 버전을 찾아야 합니다. 펌웨어를 다운로드한 후 해당 프로그램에 "드롭"하고 작업을 시작해야 합니다.

따라서 다음이 필요합니다.

  • 당신의 가제트;
  • USB 케이블;
  • 깜박이는 프로그램;
  • 펌웨어.

케이블을 통해 장치를 컴퓨터에 연결하고 "Bootlader" 모드로 전환합니다. 일반적으로 이는 귀하에게 적합한 버튼 조합입니다. 명확히해야하며 가제트 모델 및 제조업체에 따라 다릅니다.

그 후, 프로그램이 작동하기 시작하며 설치가 완료될 때까지 기다려야 합니다. 어떠한 경우에도 컴퓨터나 장치에서 코드를 뽑지 마십시오. 이 기간 동안 PC를 다른 목적으로 사용하지 않는 것이 좋습니다.

거의 모든 Android 스마트폰 사용자는 자신의 필요와 욕구에 맞게 펌웨어를 만들거나 편집하려는 욕구를 가지고 있습니다. 이 기사에서는 CWM용 펌웨어 편집 원리(zip 형식)를 살펴보겠습니다.

준비:

우선 어떤 펌웨어를 기본으로 사용할지 결정해야 합니다. 오프를 사용하는 것이 좋습니다. zip의 펌웨어. 거의 모든 일반 장치에는 깨끗한 펌웨어 + 루트가 있습니다.
펌웨어를 선택하면 PC의 편리한 위치에 다운로드해야 합니다(압축을 풀 필요 없음).
아카이버도 필요합니다. 사용하는 것이 좋습니다. 7zip동종 최고의 텍스트 편집기 메모장++.

펌웨어 구조:

펌웨어로 아카이브를 열면 다음이 표시됩니다.
메타-INF- 폴더에는 펌웨어 설치 스크립트가 포함되어 있습니다.
체계- 모든 펌웨어 파일(응용 프로그램, 조정, 스크립트 등)이 포함된 폴더입니다.
boot.img- 시스템의 핵심.

거의 모든 조작은 폴더에서 수행됩니다. 체계, 그 구조:
- 시스템 응용 프로그램.
큰 상자- 시스템 자체의 리소스.
- 스크립트, 조정, 구성, 프로필 및 시스템 설정.
글꼴- 시스템 글꼴.
뼈대- 주요 시스템 파일이 여기에 저장됩니다(그래픽, 애니메이션 텍스트 설정 등).
lib- 시스템 라이브러리.
미디어- 멀티미디어 파일(알림 벨소리, 로딩 애니메이션, 배경화면 등).
우리- 향후 시스템에서 변경할 수 없는 설정(읽기 전용 모드에서 작동)
x빈- 다시 한번 말씀드리지만, 시스템 구성 및 기타 조정이 필요합니다.
빌드.소품- 시스템, 로케일 설정 및 시스템 성능에 대한 정보.

신청:

시스템에 소프트웨어를 추가/제거하기 전에 펌웨어가 Deodex되었는지 확인해야 합니다. 즉, 앱 폴더에 .odex 파일이 있는지 확인해야 합니다. 파일이 있는 경우 이를 사용하여 제거해야 합니다. 지침 .
펌웨어에 소프트웨어를 추가합니다:
우선, 어셈블리에 추가하려는 프로그램을 스마트에 설치해야 합니다. 설치 후 다음을 사용하여 시스템에서 제거합니다. 루트 탐색기및 그 유사 항목은 데이터/앱 경로에 있으며 해당 lib도 필요하며(물론 존재하는 경우) 데이터/데이터 경로에 있습니다. 응용 프로그램에서 동일한 이름의 폴더에 있으며 확장자는 다음과 같습니다. .그래서. 그런 다음 압수 .apk시스템/앱 경로와 확장자를 가진 파일을 따라 아카이브에 파일을 넣습니다. .그래서(libs) 경로를 따라 system/lib .
펌웨어에서 소프트웨어를 제거합니다.
여기에서는 모든 것이 간단합니다. 폴더로 이동하세요. - 필요하지 않은 것을 결정하고 불필요한 소프트웨어를 모두 제거합니다(시스템을 건드리지 않는 것이 좋습니다).

언어 및 펌웨어 버전:

build.prop 파일을 데스크탑에 복사하십시오. 메모장으로 열고 다음 줄을 찾으세요.

ro.product.locale.언어=en
ro.product.locale.region=미국

러시아어의 경우 다음을 수행해야 합니다.

ro.product.locale.언어=ru
ro.product.locale.region=RU

해당 줄에 모드 이름을 입력하세요

동일한 build.prop에서

그래픽 아트:

펌웨어의 전체 그래픽 부분은 두 개의 파일 Framework-res.apk 파일 경로에 저장됩니다. 시스템프레임워크그리고 SystemUI.apk도 함께 진행됩니다. 시스템앱. 그리고 설정 애플리케이션의 그래픽 부분은 자연스럽게 Settings.apk 애플리케이션에 저장됩니다.

스크립트 및 조정(시스템 가속 및 최적화):

대부분의 설정은 파일에서 수행됩니다. 빌드.소품, 이에 대해 읽을 수 있습니다. 또한 커널이 지원하는 경우 init.d시스템을 최적화하기 위한 여러 스크립트가 있으며 그 중 하나가 이 문서에 설명되어 있습니다. (RAM 최적화)그리고 이 글에서는 init.d에 대한 스크립트 조정

시스템 글꼴 교체:

위에서 설명한 것처럼 모든 글꼴이 폴더에 포함되어 있습니다. 글꼴, 주요 글꼴은 다음과 같습니다: DroidSans.ttf 및 DroidSans-Bold.ttf 어떤 글꼴로든 교체할 수 있으며 위와 유사하게 이름을 바꾸고 대체 폴더에 펌웨어가 있는 아카이브로 이동할 수 있습니다. 글꼴.

핵심:

이론적으로는 충분히 교체가 가능합니다. boot.img자체적이지만 어떤 경우에는 코어에 추가 스크립트가 수반됩니다. 그러므로 의심스러운 점이 있으면 아무것도 하지 말 것을 권고합니다.



Android에서 펌웨어를 생성하고 편집하고 싶다면 Samsung Root Firmware Installer 프로그램이 펌웨어 생성에 도움이 될 것입니다!

Samsung Root Firmware Recrer 프로그램과 그 기능에 대해 간략히 설명합니다.

이 프로그램을 사용하면 다음을 수행할 수 있습니다.

  • 삼성 펌웨어 압축 풀기
  • 펌웨어 드레스업
  • 자동 모드에서는 루트 권한을 포함합니다.
  • 펌웨어에 파일을 자동으로 채웁니다.
  • 프로젝트를 정지한 후 계속 작업하세요
  • 펌웨어 포장

Samsung Root Firmware Installer에 필요한 구성 요소 및 작동 조건

Samsung Root Firmware Recrer 기능 시작 프로그램 검토 및 설명

1. Samsung Root Firmware Installer 프로그램이 있는 폴더로 이동하여 터미널에서 마우스 오른쪽 버튼을 클릭하여 엽니다.

2. 터미널에 다음 명령어를 입력하세요.

3. 프로그램 인터페이스가 눈앞에 열립니다

4. 프로그램을 처음 실행했다면 다음을 실행하세요. 설정 구성

삼성 루트 펌웨어 교체 작업

펌웨어 *.tar.md5 압축 풀기- 펌웨어 압축을 풀고 이를 위해 파일을 폴더로 이동합니다. unpack_tar_md5그 후 모든 파일이 추출되고, Factoryfs 또는 시스템 파일이 input_img로 이동됩니다.

Android에서 *.img 만들기(Android 필요)- 현재 Android 상태에서 펌웨어를 생성할 수 있습니다. 이 항목이 작동하려면 USB 디버깅이 활성화된 상태로 Android가 PC에 연결되어 있어야 합니다.

이 항목에는 하위 메뉴가 있습니다

원본 펌웨어에서 *.img 생성기성 펌웨어를 변경할 수 있습니다. 이렇게 하려면 IMG 파일을 input_img 폴더로 이동하세요.

이 항목에는 자체 하위 메뉴도 있습니다

Samsung Root Firmware Installer 프로그램 사용 예

이 예에서는 Android의 현재 상태에서 펌웨어가 생성됩니다.

1. 안드로이드를 PC에 연결하세요

2. 프로그램 실행

3. Android에서 *.img 만들기(Android 필요)를 선택합니다.

4. Android에서 이미지 제거를 선택하고 img 압축을 푼다.

5. 이미지를 제거할 파티션 선택

6. 이미지가 제거되고 PC로 전송될 때까지 6~7분 정도 기다립니다.

중요한! PC는 물론 스마트폰이나 태블릿에도 이미지를 촬영할 수 있는 충분한 메모리가 있어야 합니다. 이미지 크기는 2MB에서 2GB까지 가능합니다.

7. 이미지를 제거한 후 이를 수정할 수 있습니다. 필요한 경우(루트 포함) 이를 다시 압축할 수 있습니다.

8. img에서 패키지 프로젝트를 선택합니다.

9. 펌웨어의 크기와 이름을 지정합니다.

  • 다음과 같은 방식으로 파티션 크기를 지정합니다. 블록 크기를 1024로 나누고 결과에 문자 M을 추가합니다.

  • 이름은 변경하는 데 사용한 이름과 일치해야 합니다.

11. 또한 Android에서 커널을 복사하는 것을 잊지 마세요. 이렇게 하려면 Android에서 이미지 제거 - boot.img 또는 zImage 항목을 사용하세요.

12. 모든 조작이 끝나면 TAR.MD5에 펌웨어를 조립해야 합니다.

13 기본 메뉴에서 Pack Firmware *.tar.md5를 선택합니다.

14 Samsung Root Firmware Installer 프로그램의 펌웨어가 준비되었습니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: