Android에서 새 프로젝트를 만드는 방법
콘텐츠
1. 유용한 도구(Insight)에 대한 간단한 튜토리얼
무엇을 배울 수 있나요?
매우 강력한 분석 보조 소프트웨어입니다.
2. 안드로이드 최적화 과정 분석
무엇을 배울 수 있나요?
1. 안드로이드 최적화 프로세스에 대한 심층적인 이해
2. 안드로이드 소스 코드를 가까이서 관찰하세요
2. 빅 보스의 압축 풀기
3에서 기능을 볼 수 있습니다. 분석
무엇을 배울 수 있나요?
1. 다운로드 가능한 기타 기능
2. dex 파일 파싱 과정
3. 쉘링 및 브레이킹에 대한 약간의 지식
4. Android DEX 클래스 로딩 과정 분석
무엇을 배울 수 있나요?
1. 클래스 로딩의 전체 과정
2. 압축 해제 및 강화된 클래스 선택
0x01 유용한 도구(Insight)에 대한 간단한 튜토리얼
이 소프트웨어에는 c/C++ 및 Java 소스 코드를 분석하기 위한 강력한 보조 기능이 있습니다. 나중에 사용할 것이므로 간략하게 소개하겠습니다.
도구는 첨부파일에서 확인하실 수 있습니다. 별도로 업로드하고 다운로드하면 됩니다.
SI3US-205035-36448
등록 코드는 여기에 제공됩니다.
설치, 다음, 다음이 전부입니다.
새 프로젝트 만들기
새 프로젝트를 선택하세요.
단일 머신 OK
첫 번째 것을 선택하세요.
트리 추가를 선택하세요. 이는 모두 추가한다는 의미입니다.
로딩이 완료된 후
이 소프트웨어를 분석에 사용합니다.
안드로이드 최적화 과정 분석
좀 말씀드리고 싶은데, 이제 영어의 중요성을 알겠습니다. 물론 제 영어가 좋지는 않지만 사전을 찾아보면 알 수 있습니다.
1.extractAndProcessZip
먼저 내용에 대해 이야기하지 말고 이 함수의 이름을 살펴보겠습니다. extract: 추출 및 처리 Zip, 압축 파일 형식, 우리 모두는 apk가 실제로 zip 압축 패키지라는 것을 알고 있습니다.
그렇다면 이 기능의 의미는 zip을 추출하는 과정입니다.
그럼 단계별로 분석해 보겠습니다.
여기 extractAndProcessZip의 중간 변수 정의가 있습니다. 그것은 우리 연구의 초점이 아닙니다.
DexClassVerifyMode verifyMode = VERIFY_MODE_ALL;
이 문장은 검증 모듈인 verifyMode를 정의합니다. 여기서 초기화되는 데이터는 VERIFY_MODE_ALL이며, 이는 모든 것이 검증되었음을 의미합니다.
Thinking
여기서 내용을 변경하면 이 검증을 건너뛸 수 있나요?
다른 가치도 살펴보겠습니다.
아이디어가 있으면 이 값을 직접 정의할 수 있습니다.
DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;
계속 읽어보겠습니다.
이름에서 알 수 있듯이 dex 최적화를 위해 빈 헤더를 생성하는 dexOptCreateEmptyHeader라는 함수가 있습니다.
dexOffset, 나중에 다시 여기로 돌아올 수 있도록 파일 위치를 기록하세요. 이는 실제로 dex 파일을 읽는 시작 위치입니다.
다음 기능을 살펴보겠습니다.
zip 아카이브를 열고 DEX 항목을 찾으세요.
분명히 이 부분이 하는 일은 apk에서 dex 파일을 찾는 것입니다.
그럼 분석해보세요.
dex의 일부 오프셋을 추출하는 기능입니다.
DEX 데이터를 현재 오프셋의 캐시 파일로 추출합니다. dex 파일의 일부 오프셋을 기록합니다.
다음으로 이야기할 내용은 dex odexing 과정입니다.
여기서 최적화 확인이 이루어집니다.
여기에서 최적화 프로세스를 수정하고 최적화 확인을 제거할 수도 있습니다.
여기 데이터의 출처와 비교할 위치를
생각해 보세요. ·
이 데이터는 build.prop에서 비교됩니다.
2. 계속해서 최적화하세요
dvmContinueOptimization 함수에 대해 살펴보겠습니다.
PS:
우리는 포장 풀기와 매우 관련이 있는 매우 중요한 장소와 곧 접촉하게 됩니다
dvmContinueOptimization 기능을 엽니다
첫 번째는 판단입니다.
그런 다음 dex 파일에 쓰기가 있습니다.
그럼 계속 읽어보세요(중요한 사항이 나옵니다)
dvmDexFileOpenPartial. 이전에 다른 사람들의 언패킹 튜토리얼을 본 적이 있다면 이것이 자주 사용되는 엔드포인트라는 것을 아셔야 합니다. 하지만 이제 이 함수가 소스 코드에 존재한다는 것을 알았습니다.
dvmDexFileOpenPartial 함수의 호출을 살펴보겠습니다.
여기에서는 두 번 호출되며 다른 시간은 자체 정의입니다.
먼저 dvmDexFileOpenPartial의 프로토타입을 살펴보겠습니다
int dvmDexFileOpenPartial(const void* addr, int len, DvmDex** ppDvmDex)
매개변수 1: 메모리에 로드된 DEX 파일의 기본 주소(즉, DEX. .035)
매개변수 2: 로드된 DEX 파일의 파일 길이,
매개변수 3: 출력 매개변수, DEX 파일은 Dex 파일의 클래스, 필드, 메소드 및 문자열 정보를 포함하는 DvmDex 구조로 변환됩니다. Dalivk이 운영하는 Dex 파일의 객체는 구조 구조입니다
마지막으로 헤더 정보가 여기에 기록됩니다.
0x03 Android DEX 파일 구문 분석 및 분석
dvmRawDexFileOpen() 이 함수는 우리가 이해해야 할 핵심 함수이며 RawDexFile.cpp 함수에 있습니다.
먼저 기본 변수를 정의합니다.
우리 모두는 파일 형식에서 매우 중요한 것이 매직 넘버라는 것을 알고 있습니다. 따라서 매직 넘버를 결정하는 첫 번째 단계인 verifyMagicAndGetAdler32를 소개합니다. 여기서의 마법은 매직 넘버입니다.
여기서 시간과 파일 크기를 확인합니다.
이 기능은 핵심 기능이자 우리가 집중적으로 분석해야 할 기능이기도 합니다. 주요 기능은 소위 odexization이라는 dex에 해당하는 odex 파일을 생성하는 것입니다. 함수를 따라가서 살펴보겠습니다.
다음은 dexOptGenerateCacheFileName() 함수의 일부입니다. 우리의 가장 중요한 것은 그것이 출력되는 위치를 확인하는 것입니다.
여기서는 데이터 디렉터리 ALOGV("'%s' '%s'에 대한 캐시 파일은 '%s'입니다', fileName, subFileName, nameBuf);
다음에 생성된 것을 볼 수 있습니다. 이 형식처럼요.
즉, odex 파일이 여기에 생성되었습니다.
다음으로 할 일은 이 함수 dvmDexFileOpenFromFd()이며, 추가로 최적화하고 매핑을 완료한 후 읽을 수 있는 파일로 설정합니다. 이 기능을 엽니다. 위치는 DvmDex.cpp에 있습니다.
먼저 이 함수가 호출되는 위치를 살펴보겠습니다.
이 함수가 호출되는 곳은 핵심 함수인 dvmRawDexFileOpen입니다. 이 함수는 먼저 dexOptGenerateCacheFileName을 호출하여 odex를 생성한 다음 다른 최적화를 위해 dvmDexFileOpenFromFd를 호출합니다.
최적화의 마지막 단계는 DEX를 구문 분석하는 dexFileParse()입니다. 이 위치는 DexFile
에 간략하게 요약되어 있습니다.
dvmRawDexFileOpen() 기본 제어 함수 - dexOptGenerateCacheFileName()은 해당 odex를 생성합니다. - dvmDexFileOpenFromFd()는 추가로 최적화합니다. - dexFileParse()는 dex를 구문 분석합니다.
PS: 팁
dexfileopenpartial이 다음 섹션에 있으면 이를 깨뜨릴 방법이 없다는 것을 알 수 있습니다. 그런 다음 dexOptGenerateCacheFileNamePKcS0, dvmdexfileopenfromfd 및 기타 기능을 선택하여 다음 섹션으로 진행할 수 있습니다.
일반적으로 말해서, dexfileopenpartial은 쉘을 사용하여 작업을 처리하는 데 더 좋습니다.
0x04 Android Dex 클래스 로딩 프로세스
다른 소스 코드는 주요 제어 기능에 의해 안내되어 다른 주요 기능이 작동하도록 안내합니다.
주요 제어 기능은 Dalvik_dalvik_system_DexFile_defineClassNative()
주의가 필요한 기능인 Dalvik_dalvik_system_DexFile_openDexFileNative
여기서 주목해야 할 점은 덤프할 수 있는 곳이 두 군데 있다는 점입니다.
주요 제어 기능을 살펴보겠습니다.
메인 컨트롤 기능에 이런 호출이 있습니다.
이 호출은 쿠키를 확인하기 위한 것이지만 이 쿠키는 해독된 dex 쿠키일 가능성이 높으므로 이 쿠키를 여기에 덤프할 수도 있습니다.
그럼 아래를 내려다보세요.
dvmDefineClass 함수, 이 함수는 클래스 로딩을 확인하는 함수입니다.
함수는 스스로 판단을 내리지만, 반환되는 것은 실로 큰 머리입니다. 이 기능을 자세히 살펴보겠습니다.
여기서 가장 중요한 것은 동적으로 로드되는 클래스인 clazz입니다.
그 값은 loadClassFromDex 함수에 의해 반환되므로 좀 더 자세히 살펴보겠습니다.
여기에서 그러한 구조를 확인하세요.
이 구조의 세부 사항을 살펴 보겠습니다.
이 구조는 dex 구조와 정확히 동일합니까? 이는 여기에 우리에게 필요한 것이 있음을 보여줍니다.
위 내용은 Android에서 새 프로젝트를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

OnLeaks는 이제 Android Headlines와 제휴하여 X(이전 Twitter) 팔로어로부터 4,000달러 이상의 수익을 창출하려는 시도가 실패한 지 며칠 후 Galaxy S25 Ultra에 대한 첫 번째 모습을 제공합니다. 맥락에 따라 h 아래에 포함된 렌더링 이미지

TCL은 두 가지 새로운 스마트폰을 발표하는 것과 함께 NXTPAPER 14라는 새로운 Android 태블릿도 발표했는데, TCL의 거대한 화면 크기는 판매 포인트 중 하나입니다. NXTPAPER 14는 TCL의 시그니처 브랜드인 무광택 LCD 패널 버전 3.0을 갖추고 있습니다.

최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

Vivo Y300 Pro는 방금 완전히 공개되었으며 대용량 배터리를 갖춘 가장 얇은 중급 Android 휴대폰 중 하나입니다. 정확히 말하면 스마트폰의 두께는 7.69mm에 불과하지만 배터리 용량은 6,500mAh입니다. 최근 출시된 것과 동일한 용량이다.

삼성전자는 팬에디션(FE) 스마트폰 시리즈를 언제 업데이트할지 아직 힌트를 주지 않았다. 현재 상태로 Galaxy S23 FE는 2023년 10월 초에 출시된 회사의 최신 버전으로 남아 있습니다.

Redmi Note 14 Pro Plus는 이제 작년 Redmi Note 13 Pro Plus(Amazon에서 현재 $375)의 직접적인 후속 제품으로 공식화되었습니다. 예상대로 Redmi Note 14 Pro Plus는 Redmi Note 14 및 Redmi Note 14 Pro와 함께 Redmi Note 14 시리즈를 주도합니다. 리

모토로라는 올해 셀 수 없이 많은 기기를 출시했지만 그 중 폴더블 기기는 2개뿐이었습니다. 맥락에 따라 전 세계 대부분이 Razr 50 및 Razr 50 Ultra로 쌍을 받았지만 Motorola는 북미에서 Razr 2024 및 Razr 2로 제공합니다.
