Table des matières
Combinaison dynamique et statique de WhatsApp inversé
Toutes les surcharges de la méthode 0x01.hook
Toutes les méthodes de la classe 0x02.hook
Toutes les sous-classes de la classe 0x03.hook
0x04.hook L'exporté fonction de la bibliothèque locale
0x05. Combinaison dynamique et statique de WhatsApp inversé
Maison Java javaDidacticiel Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en Java

Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en Java

Apr 21, 2023 pm 06:49 PM
java whatsapp

Combinaison dynamique et statique de WhatsApp inversé

Toutes les surcharges de la méthode 0x01.hook

Dans un article qui vous amène à comprendre l'essence de Frida, nous avons appris à gérer les surcharges de put, passons d'abord en revue le code :

1

2

my_class.fun.overload("int" "int").implementation = function(x,y){

my_class.fun.overload("java.lang.String").implementation = function(x){

Copier après la connexion

C'est-à-dire que nous devons construire un tableau surchargé et imprimer chaque surcharge. Passons directement au code :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//目标类

var hook = Java.use(targetClass);

//重载次数

var overloadCount = hook[targetMethod].overloads.length;

//打印日志:追踪的方法有多少个重载

console.log("Tracing " + targetClassMethod + " [" + overloadCount + " overload(s)]");

//每个重载都进入一次

for (var i = 0; i <p> De cette façon, nous avons traité toutes les surcharges de méthodes, puis énumérons toutes les méthodes. </p><h4 id="Toutes-les-méthodes-de-la-classe-x-hook">Toutes les méthodes de la classe 0x02.hook</h4><p>ou allez directement au code : </p><pre class="brush:php;toolbar:false">function traceClass(targetClass)

{

  //Java.use是新建一个对象哈,大家还记得么?

    var hook = Java.use(targetClass);

  //利用反射的方式,拿到当前类的所有方法

    var methods = hook.class.getDeclaredMethods();

  //建完对象之后记得将对象释放掉哈

    hook.$dispose;

  //将方法名保存到数组中

    var parsedMethods = [];

    methods.forEach(function(method) {

        parsedMethods.push(method.toString().replace(targetClass + ".""TOKEN").match(/\sTOKEN(.*)\(/)[1]);

    });

  //去掉一些重复的值

    var targets = uniqBy(parsedMethods, JSON.stringify);

  //对数组中所有的方法进行hook,traceMethod也就是第一小节的内容

    targets.forEach(function(targetMethod) {

        traceMethod(targetClass + "." + targetMethod);

    });

}

Copier après la connexion

Toutes les sous-classes de la classe 0x03.hook

ou allez à la partie centrale du code :

1

2

3

4

5

6

7

8

9

10

11

12

13

//枚举所有已经加载的类

Java.enumerateLoadedClasses({

    onMatch: function(aClass) {

        //迭代和判断

        if (aClass.match(pattern)) {

            //做一些更多的判断,适配更多的pattern

            var className = aClass.match(/[L]?(.*);?/)[1].replace(/\//g, ".");

            //进入到traceClass里去

            traceClass(className);

        }

    },

    onComplete: function() {}

});

Copier après la connexion

0x04.hook L'exporté fonction de la bibliothèque locale

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

// 追踪本地库函数

function traceModule(impl, name)

{

    console.log("Tracing " + name);

    //frida的Interceptor

    Interceptor.attach(impl, {

        onEnter: function(args) {

 

        console.warn("\n*** entered " + name);

        //打印调用栈

        console.log("\nBacktrace:\n" + Thread.backtrace(this.context, Backtracer.ACCURATE)

                        .map(DebugSymbol.fromAddress).join("\n"));

        },

        onLeave: function(retval) {

        //打印返回值

        console.log("\nretval: " + retval);

        console.warn("\n*** exiting " + name);

 

        }

    });

}

Copier après la connexion

0x05. Combinaison dynamique et statique de WhatsApp inversé

C'est enfin l'heure du combat réel. Les codes ci-dessus sont assemblés pour former un script. En fait, ce script est également introduit dans Awesome-. frida. Le code est ici, mais il a un petit bug Après avoir été modifié par Huluwa, enfin disponible.

Essayons certaines de ses fonctions principales. La première est la fonction exportée de la bibliothèque locale.

1

2

3

4

5

6

7

8

setTimeout(function() {

    Java.perform(function() {

        trace("exports:*!open*");

        //trace("exports:*!write*");

        //trace("exports:*!malloc*");

        //trace("exports:*!free*");

    });

}, 0);

Copier après la connexion

Ce que nous accrochons est la fonction open(), exécutez-la et voyez l'effet : hook的是open()函数,跑起来看下效果:

1

$ frida -U -f com.whatsapp -l raptor_frida_android_trace_fixed.js --no-pause

Copier après la connexion

Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en Java

如图所示*!open*根据正则匹配到了openlogopen64等导出函数,并hook了所有这些函数,打印出了其参数以及返回值。

接下来想要看哪个部分,只要扔到jadx里,静态“分析”一番,自己随便翻翻,或者根据字符串搜一搜。

Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en Java

比如说我们想要看上图中的com.whatsapp.app.protocol包里的内容,就可以设置trace("com.whatsapp.app.protocol")

Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en Java

Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en Java

可以看到包内的函数、方法、包括重载、参数以及返回值全都打印了出来。这就是frida脚本的魅力。

当然,脚本终归只是一个工具,你对Java、安卓App的理解,和你的创意才是至关重要的。

接下来可以搭配Xposed module看看别人都给whatsapp做了哪些模块,hookrrreee

Méthode de combinaison des méthodes Java dynamiques et statiques pour inverser WhatsApp

Étapes pour inverser WhatsApp en utilisant une combinaison de méthodes dynamiques et statiques en JavaComme le montre l'image*!open* correspond selon les règles régulières openlog, open64 et d'autres fonctions exportées, a accroché toutes ces fonctions et a imprimé leurs paramètres et valeurs de retour.

Quelle que soit la partie que vous souhaitez voir ensuite, jetez-la simplement dans jadx, "analysez-la" statiquement, parcourez-la vous-même ou recherchez-la en fonction de la chaîne.

🎜Méthode dynamique et statique Java combinée avec WhatsApp inversé🎜🎜Par exemple , nous Si vous souhaitez voir le contenu du package com.whatsapp.app.protocol dans l'image ci-dessus, vous pouvez définir trace("com.whatsapp.app.protocol"). 🎜🎜Méthode dynamique et statique Java combinée avec WhatsApp inversé🎜🎜Méthode dynamique et statique Java combinée avec WhatsApp inversé🎜🎜Vous pouvez voir les fonctions dans le package, les méthodes, y compris les surcharges, les paramètres et les valeurs de retour, sont tous imprimés. C'est tout le charme du script frida. 🎜🎜Bien sûr, le script n'est qu'un outil après tout. Votre compréhension de Java, de l'application Android et votre créativité sont cruciales. 🎜🎜 Ensuite, vous pouvez utiliser le module Xposed pour voir quels modules d'autres ont créés pour Whatsapp, quelles fonctions de hook, quelles fonctions sont implémentées et apprendre à les écrire vous-même. 🎜🎜🎜🎜🎜 Bien sûr, je voudrais souligner à nouveau que la triche est illégale. Ne créez et ne distribuez aucune application de triche, sinon des sanctions légales n'attendront que vous. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Feb 07, 2025 pm 12:11 PM

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo

See all articles