2013-04-17 2 views
0

16 진수/dalvik apk 코드의 단일 문자열을 대체하고 싶습니다. 나는 이것이 안드로이드 클래스 프로젝트에서 서명 된 APK 파일로 변환 될 때 문자열이 어떻게 인코딩되는지 알아 내야한다는 것을 깨닫는다.apk dalvik의 문자열 (압축) 코드를 대체 할 수 있습니까

이것이 가능합니까? 글쎄, 코드에서, 가능한 anythings 알아요.하지만 아무도 그것을 어떻게하는 방법을 알고 있습니까? 간단히 zip 아카이브 (예 : SystemUI.apk의 아이콘 대체)가있는 Windows 플랫폼에서 .apk 파일을 삭제하고 apk 파일을 추가하지 않고 추가 할 수 있다는 것을 알았습니다. 프로그래밍 방식으로 어떻게 처리합니까? 특히 파이썬에서?

누구든지이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

이 나는 ​​시도했다 :

import zipfile 
zf=zipfile.ZipFile('APK.apk') # my zip file 
for filename in ['classes.dex']: # zipped file content file 
data=zf.read(filename) 
data=data.replace('mystring','newstring') #replace string within the content file 
file=open('classes.dex','wb') 
file.write(data) # write NEW content file to local disk 
file.close() 
zin=zipfile.ZipFile('APK.apk','r')  # create zip in and zip out 
zout=zipfile.ZipFile('APK.apk','w')  # iterate through zipped contents and 
for item in zin.infolist():    # copy all EXCEPT 'classes.dex' content file 
    buffer=zin.read(item.filename) 
    if (item.filename!='classes.dex'): 
    zout.writestr(item,buffer) 
zout.close() 
zin.close() 
zf=zipfile.ZipFile('APK.apk',mode='a') # finally, add new content file from my local disk 
zf.write('classes.dex',arcname='classes.dex') 
zf.close() 

이 원래 APK.apk 파일을 받아, 압축 된 콘텐츠 파일 중 하나에 문자열을 다시 작성, 다시 APK.apk에 다시 재 포장. 문제는 다음과 같습니다. ORIGINAL APK.apk = 170 kb NEW APK.apk = 399 KB 및 설치 불가, apk가 "손상"되어 Android 시스템이 apk를 설치하지 않습니다.

+0

apk에 대해서는 아무 것도 몰라요.하지만 zip 파일 (http://docs.python.org/2/library)을 살펴 보는 것보다 본질적으로 zip 파일이라고 말하면됩니다./zipfile) 모듈. – BrtH

+0

나는 시도했다, zipfile은 유용하다. 그리고 그것은 apk 파일과 내용을 압축 해제하는 것처럼 보인다.하지만 그것은 문제의 재 압축이다. 내가 찾을 수있는 모든 가능한 압축 형식을 시도했지만 이상하게 zipfile은 압축을 사용하여 어느 압축을 "알지"는지를 비교할 때 압축 방식의 파일 크기가 크게 바뀌면 같은 방식으로 다시 압축 할 수없는 것처럼 보입니다. 재 압축 된 원본. –

+0

질문 편집을 참조하십시오 .. –

답변

0

원본보다 높은 바이트로 문자열을 추가 할 수 없습니다. 특정 크기의 문자열을 동일한 문자열 크기로 대체해야합니다. 행운의 패처러를 시험해보십시오. 그것은 안드로이드에서만 문자열을 바꿉니다 .. 필요가 없습니다 귀하의 PC에 가져올 수 있습니다. :-)

관련 문제