# Tutorial Frida 1
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_). {% embed url="https://www.stmcyber.com/careers" %} **De**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ **APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\ **Código-fonte**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) ## Python Frida permite que você **insira código JavaScript** dentro de funções de um aplicativo em execução. Mas você pode usar **python** para **chamar** os hooks e até mesmo **interagir** com os **hooks**. Este é um script python simples que você pode usar com todos os exemplos propostos neste tutorial: ```python #hooking.py import frida, sys with open(sys.argv[1], 'r') as f: jscode = f.read() process = frida.get_usb_device().attach('infosecadventures.fridademo') script = process.create_script(jscode) print('[ * ] Running Frida Demo application') script.load() sys.stdin.read() ``` Chame o script: ```bash python hooking.py ``` É útil saber como usar o Python com o Frida, mas para esses exemplos você também pode chamar diretamente o Frida usando as ferramentas de linha de comando do Frida: ```bash frida -U --no-pause -l hookN.js -f infosecadventures.fridademo ``` ## Hook 1 - Bypass de Booleano Aqui você pode ver como **hookar** um método **booleano** (_checkPin_) da classe: _infosecadventures.fridademo.utils.PinUtil_ ```javascript //hook1.js Java.perform(function() { console.log("[ * ] Starting implementation override...") var MainActivity = Java.use("infosecadventures.fridademo.utils.PinUtil"); MainActivity.checkPin.implementation = function(pin){ console.log("[ + ] PIN check successfully bypassed!") return true; } }); ``` ``` python hooking.py hook1.js ``` ## Hook 2 - Bruteforce de Função ### Função não estática Se você deseja chamar uma função não estática de uma classe, você **primeiro precisa de uma instância** dessa classe. Em seguida, você pode usar essa instância para chamar a função.\ Para fazer isso, você pode **encontrar uma instância existente** e usá-la: ```javascript Java.perform(function() { console.log("[ * ] Starting PIN Brute-force, please wait..."); Java.choose("infosecadventures.fridademo.utils.PinUtil", { onMatch: function(instance) { console.log("[ * ] Instance found in memory: " + instance); for(var i = 1000; i < 9999; i++){ if(instance.checkPin(i + "") == true){ console.log("[ + ] Found correct PIN: " + i); break; } } }, onComplete: function() { } }); }); ``` Neste caso, isso não está funcionando, pois não há nenhuma instância e a função é estática ### Função Estática Se a função for estática, você pode simplesmente chamá-la: ```javascript //hook2.js Java.perform(function () { console.log("[ * ] Starting PIN Brute-force, please wait...") var PinUtil = Java.use("infosecadventures.fridademo.utils.PinUtil"); for(var i=1000; i < 9999; i++) { if(PinUtil.checkPin(i+"") == true){ console.log("[ + ] Found correct PIN: " + i); } } }); ``` ## Hook 3 - Recuperando argumentos e valor de retorno Você pode fazer um hook em uma função e fazer com que ela **imprima** o valor dos **argumentos passados** e o valor do **valor de retorno:** ```javascript //hook3.js Java.perform(function() { console.log("[ * ] Starting implementation override...") var EncryptionUtil = Java.use("infosecadventures.fridademo.utils.EncryptionUtil"); EncryptionUtil.encrypt.implementation = function(key, value){ console.log("Key: " + key); console.log("Value: " + value); var encrypted_ret = this.encrypt(key, value); //Call the original function console.log("Encrypted value: " + encrypted_ret); return encrypted_ret; } }); ``` ## Importante Neste tutorial, você conectou métodos usando o nome do método e _.implementation_. Mas se houver **mais de um método** com o mesmo nome, você precisará **especificar o método** que deseja conectar, **indicando o tipo dos argumentos**. Você pode ver isso no [próximo tutorial](frida-tutorial-2.md).
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_). {% embed url="https://www.stmcyber.com/careers" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).