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, 0x1
const/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