REGRA | DESCRIÇÃO |
---|---|
[MIN_ENGINE_VER] | Motor mínimo necessário da versão; o motor na versão 1.6.8 é a versão 2 Exemplo: [MIN_ENGINE_VER] 1 |
[AUTHOR] | Mostrar autor do patch Exemplo: [AUTHOR] Meu nome é |
[PACKAGE] | Para qual nome de pacote Exemplo: [PACKAGE] * |
[ADD_FILES] | Adicionar arquivo Exemplo: Neste exemplo, o arquivo index.html que está dentro do arquivo de extensão .zip será adicionado ao diretório raw-pt [ADD_FILES] SOURCE: index.html TARGET: res/raw-pt/index.html [/ADD_FILES] |
[REMOVE_FILES] | Remover arquivo Exemplo: Neste exemplo, todos os arquivos que estiverem dentro do diretório values-pt-rBR serão excluídos junto com ele [REMOVE_FILES] TARGET: res/values-pt-rBR [/REMOVE_FILES] |
[MERGE] | Combinar recursos Exemplo: [MERGE] SOURCE: extra.zip [/MERGE] |
[MATCH_REPLACE] | Substitua o conteúdo correspondente dentro do arquivo de destino Exemplo: [MATCH_REPLACE] TARGET: smali/com/frojo/moy7/Game.smali MATCH: const/16 v2, 0x1f4 invoke-interface REGEX: true REPLACE: const v2, 0xf423f DOTALL: true [/MATCH_REPLACE] |
[MATCH_GOTO] | Redireciona para outra regra Exemplo: Neste exemplo, essa regra está redirecionando para outra regra que decidirá se deve ou não modificar ou seja GOTO: modify_application redireciona se corresponder [MATCH_GOTO] TARGET: AndroidManifest.xml MATCH: <application .*android:name=.*> REGEX: true GOTO: modify_application [/MATCH_GOTO] E como esta regra corresponde ao "modify_application", ela fará uma substituição [MATCH_REPLACE] NAME: modify_application |
[MATCH_ASSIGN] | Atribuição de correspondência, Obtenha o nome da texto e atribua-o a STR_NAME Exemplo: ASSIGN: STR_NAME=${GROUP2} [/MATCH_ASSIGN] Nesta regra a atribuição do nome do texto é obtida MATCH: <string name="${STR_NAME}"> REGEX: true REPLACE: <string name="${STR_NAME}">2- [/MATCH_REPLACE] |
[FUNCTION_REPLACE] | Esta tag não é suportada, mas o uso dela se consistente nisso. Exemplo: [FUNCTION_REPLACE] TARGET: FUNCTION: REPLACE: [/FUNCTION_REPLACE] |
[SIGNATURE_REVISE] | Revisão de assinatura, se houver vetores "%RSA_DATA%" e "%PACKAGE_NAME%" dentre aspas no arquivo de extensão smali serão substituídas pelo nome do pacote do aplicativos que você aplicou o patch ou serão substituídos por dados de recurso Exemplo: #Substitua qualquer campo vazio para assinar o nome do pacote [MATCH_REPLACE] TARGET: smali/Test$1.smali MATCH: const/(.*) ([pv]\d+), "" REGEX: true REPLACE: const/${GROUP1} ${GROUP2}, "%PACKAGE_NAME%" [/MATCH_REPLACE] #Assinar nome do pacote do aplicativo [SIGNATURE_REVISE] TARGET: smali/Test$1.smali [/SIGNATURE_REVISE] |
[GOTO] | Redirecionar para outra regra Exemplo: Neste exemplo, a regra "go to" vai redirecionar para outra regra que, caso corresponda, decidirá o que fazer [GOTO] GOTO: modify_activities [/GOTO] |
[DUMMY] | Regra fictícia. É mais como um rótulo que contém apenas o campo NAME. De “MATCH_GOTO” ou “GOTO” regra, poderíamos pular para uma regra fictícia. |
[EXECUTE_DEX] | Executar um script.dex Exemplo: [EXECUTE_DEX] SCRIPT: script.dex SMALI_NEEDED: true MAIN_CLASS: test.AddDebugInfo ENTRANCE: addDebugInfo PARAM: smali [/EXECUTE_DEX] |
[APPLICATION] | Para alvo de componente, localizar a primeira atividade do aplicativo Exemplo: Localizar a atividade inicial do aplicativo [MATCH_REPLACE] NAME: modify_activities TARGET: [APPLICATION] |
[ACTIVITIES] | Para alvo de componente, localizar qualquer atividade do aplicativo Exemplo: Essa regra vai obter qualquer resultado do arquivo de extensão .smali [MATCH_REPLACE] NAME: modify_activities TARGET: [ACTIVITIES] |
[LAUNCHER_ACTIVITIES] | Para alvo de componente, localizar a primeira atividade do aplicativo Exemplo: [MATCH_GOTO] TARGET: [LAUNCHER_ACTIVITIES] |
SINTAXES | DESCRIÇÃO |
---|---|
NAME: | Especifica o nome da regra Exemplo: NAME: add_ttf NAME: Pacifico.ttf |
SOURCE: | Extrair um arquivo smali dentro do arquivo zip para o aplicativo Exemplo: SOURCE: index.html SOURCE: MaiActivity.smali |
TARGET: | Indica o trageto do arquivo Exemplo: TARGET: assets/index.html TARGET: res/raw-pt/index.html |
REPLACE: | Substituição de componentes Exemplo: REPLACE: const v2, 0xf423f |
GOTO: | Especifica o nome da próxima regra. Se houver correspondência, então irá para execute essa regra, ou seja se Exemplo: GOTO: modify_res #Goto redireciona para essa regra correspondente [MATCH_REPLACE] NAME: modify_res |
SCRIPT: | É um arquivo de script de destino dentro do zip a ser executado. Deve ser um dex arquivo, que pode ser gerado seguindo comandos: javac -source 1.7 -target 1.7 test/AddDebugInfo.java dx --dex --output=script.dex test/AddDebugInfo.class Exemplo: SCRIPT: script.dex |
SMALI_NEEDED: | Indica que o script precisa de um código pequeno ou não. Exemplo: Neste exemplo a expressão é regular, declare como "true" se precisa de um código pequeno ou declare como "false" se não precisa de um código pequeno SMALI_NEEDED: true SMALI_NEEDED: false |
MAIN_CLASS: | Caminho da classe que contém a entrada Exemplo: MAIN_CLASS: test.AddDebugInfo |
EXTRACT: | Extraí arquivos |
DOTALL: | Indica se o sinalizador é ou não usado com a expressão regular. Exemplo: DOTALL: true DOTALL: false |
ASSIGN: | Especifica o nome e o valor da variável. (Por exemplo: p1 = $ {GROUP1}) E se há mais de uma variável, então cada variável seguinte deve começar com um nova linha. |
REGEX: | Declare como true ou false. true significa que o texto de correspondência é uma expressão regular. Exemplo: Declare como true se quiser que vá para a próxima regra ou declare-o como false se não quiser que vá para a próxima regra REGEX: true REGEX: false |
FUNCTION: | Não é suportado |
INTERFACE_VERSION: | Versão Da Interface |
PARAM: | Passe como o último parâmetro para o método de destino Exemplo: PARAM: smali O parâmetro indica a extensão do arquivo |
ENTRANCE: | Método de destino para executar, o método deve aceitar 4 parâmetros de texto Exemplo: ENTRANCE: MaiActivity |
EXPRESSÃO REGULAR | DESCRIÇÃO |
---|---|
* | Substituir o nome para representa qualquer texto Exemplo: TARGET: *.smali declarando desta forma, vai obter qualquer nome do arquivo de extensão .smali Outro exemplo: TARGET: MainActivity*.smali Assim podemos obter todas as classes relacionadas a essa "MainActivity.smali" MainActivity$1.smali MainActivity$2.smali etc... |
.+ | Representa qualquer nome do texto original Exemplo: .method (.+) .method public |
\d+ | Representa números Exemplos: .registers (\d+) .registers 3 const/4 v1, 0x1const/4 v1, (\d+) |
[pv]\ | Representa registros0x Exemplo: ([pv]\) representa um registro como por exemplo p0, v0, v1, etc... |
\ | Representa uma separação entre objetos Exemplo: \.method \.registers Isso significa que o método não está na mesma linha do registro |
# | Linha de comentário Exemplo: Neste exemplo, a linha de comentário fica acima da tag para descrever o que essa regra faz #Substituir [MATCH_REPLACE] |
\n | Representada por um caractere de uma nova linha, alguns casos podem excluir linhas Exemplo: MATCH: return-void\n .end method se você adicionar vai excluir uma linha e o resultado vai ser esse return-void.end method |
${GROUP1} ${GROUP2} |
Representa o nome do método ou número da linha, se corresponder, substituirá igualmente. Por exemplo: .method public .method ${GROUP1} line 10 line ${GROUP2} invoke-static {v4}, invoke-static {${GROUP2}}, |
COMANDO | DESCRIÇÃO |
---|---|
true | Se você deseja autorizar declare abaixo Exemplo: REGEX: true |
false | Se você não deseja autorizar declare abaixo Exemplo: REGEX: false |