frida-fusion 0.1.10__tar.gz → 0.1.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of frida-fusion might be problematic. Click here for more details.

Files changed (34) hide show
  1. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/PKG-INFO +1 -1
  2. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/__meta__.py +2 -2
  3. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/fusion.py +23 -3
  4. frida_fusion-0.1.11/frida_fusion/modules/android_setings/settings.js +172 -0
  5. frida_fusion-0.1.11/frida_fusion/modules/android_setings/settings.py +106 -0
  6. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/modules/crypto/crypto.js +14 -14
  7. frida_fusion-0.1.11/frida_fusion/modules/tls_unpinning/__init__.py +0 -0
  8. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion.egg-info/PKG-INFO +1 -1
  9. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion.egg-info/SOURCES.txt +3 -0
  10. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/LICENSE +0 -0
  11. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/README.md +0 -0
  12. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/__init__.py +0 -0
  13. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/__main__.py +0 -0
  14. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/args.py +0 -0
  15. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/config.py +0 -0
  16. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/libs/__init__.py +0 -0
  17. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/libs/color.py +0 -0
  18. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/libs/database.py +0 -0
  19. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/libs/helpers.js +0 -0
  20. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/libs/logger.py +0 -0
  21. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/libs/scriptlocation.py +0 -0
  22. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/module.py +0 -0
  23. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/modules/__init__.py +0 -0
  24. {frida_fusion-0.1.10/frida_fusion/modules/crypto → frida_fusion-0.1.11/frida_fusion/modules/android_setings}/__init__.py +0 -0
  25. {frida_fusion-0.1.10/frida_fusion/modules/tls_unpinning → frida_fusion-0.1.11/frida_fusion/modules/crypto}/__init__.py +0 -0
  26. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/modules/crypto/crypto.py +0 -0
  27. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion/modules/tls_unpinning/frida_multiple_unpinning.py +0 -0
  28. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion.egg-info/dependency_links.txt +0 -0
  29. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion.egg-info/entry_points.txt +0 -0
  30. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion.egg-info/requires.txt +0 -0
  31. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/frida_fusion.egg-info/top_level.txt +0 -0
  32. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/pyproject.toml +0 -0
  33. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/setup.cfg +0 -0
  34. {frida_fusion-0.1.10 → frida_fusion-0.1.11}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frida-fusion
3
- Version: 0.1.10
3
+ Version: 0.1.11
4
4
  Summary: Hook your mobile tests with Frida
5
5
  Author-email: "Helvio Junior (M4v3r1ck)" <helvio_junior@hotmail.com>
6
6
  Maintainer-email: "Helvio Junior (M4v3r1ck)" <helvio_junior@hotmail.com>
@@ -1,8 +1,8 @@
1
- __version__ = '0.1.10'
1
+ __version__ = '0.1.11'
2
2
  __title__ = "Frida Fusion"
3
3
  __description__ = "📱 frida-fusion - runtime mobile exploration"
4
4
  __url__ = "https://github.com/helviojunior/frida-fusion"
5
- __build__ = 0x3c147be
5
+ __build__ = 0xc8879a3
6
6
  __author__ = "Helvio Junior (M4v3r1ck)"
7
7
  __author_email__ = "helvio_junior@hotmail.com"
8
8
  __license__ = "GPL-3.0"
@@ -194,9 +194,29 @@ class Fusion(object):
194
194
  s.on("message", self.make_handler("fusion_bundle.js")) # register the message handler
195
195
  s.load()
196
196
  except Exception as e:
197
- Logger.pl('{!} {R}Error:{O} %s{W}' % str(e))
198
- print("")
199
- sys.exit(1)
197
+
198
+ try:
199
+ err = str(e)
200
+ pattern = re.compile(r'script\(line (\d+)\):')
201
+ matches = [
202
+ (
203
+ m.group(0),
204
+ self.translate_location(dict(
205
+ file_name="fusion_bundle.js",
206
+ line=m.group(1),
207
+ ))
208
+ )
209
+ for m in pattern.finditer(err)
210
+ ]
211
+ for m in matches:
212
+ err = err.replace(m[0], f"{m[1].file_name}(line {m[1].line})")
213
+ Logger.pl('{!} {R}Error:{O} %s{W}' % err)
214
+ print("")
215
+ sys.exit(1)
216
+ except Exception:
217
+ Logger.pl('{!} {R}Error:{O} %s{W}' % str(e))
218
+ print("")
219
+ sys.exit(1)
200
220
 
201
221
  def attach(self, pid: int):
202
222
  self.running = True
@@ -0,0 +1,172 @@
1
+ /*
2
+ Documentation
3
+ https://developer.android.com/reference/android/provider/Settings
4
+
5
+ */
6
+
7
+ const SET_MODULES = {
8
+ Global: true,
9
+ Secure: true,
10
+ System: true,
11
+ };
12
+
13
+ setTimeout(function() {
14
+ Java.perform(function() {
15
+
16
+ // Bypass Settings
17
+ var androidSettings = [
18
+ ['adb_enabled', 0],
19
+ ['development_settings_enabled', 0],
20
+ ['play_protect_enabled', 1],
21
+ ['adb_enabled', 0]
22
+ ];
23
+
24
+ function settings_bypassValue(name, originalValue) {
25
+ androidSettings.forEach(function(item) {
26
+ let name = item[0];
27
+ let value = item[1];
28
+
29
+ if (name === name) {
30
+ fusion_sendMessage('D', `Bypassing ${name}`)
31
+ return value;
32
+ }
33
+ });
34
+ return originalValue;
35
+ }
36
+
37
+ if (SET_MODULES.System) {
38
+
39
+ fusion_sendMessage('D', "Module attached: android.provider.Settings.System");
40
+ const settingsSystem = Java.use("android.provider.Settings$System");
41
+
42
+ settingsSystem.getString.overload('android.content.ContentResolver', 'java.lang.String').implementation = function (cr, name) {
43
+ var data = this.getString.overload('android.content.ContentResolver', 'java.lang.String').call(this, cr, name);
44
+ fusion_sendKeyValueData("Settings$System.getString", [
45
+ {key: "Name", value: name},
46
+ {key: "Result", value: data}
47
+ ]);
48
+ return data
49
+ };
50
+
51
+ settingsSystem.putString.overload('android.content.ContentResolver', 'java.lang.String', 'java.lang.String').implementation = function (cr, name, value) {
52
+ fusion_sendKeyValueData("Settings$System.putString", [
53
+ {key: "Name", value: name},
54
+ {key: "Value", value: value}
55
+ ]);
56
+ return this.putString.overload('android.content.ContentResolver', 'java.lang.String', 'java.lang.String').call(this, cr, name, value);
57
+ };
58
+
59
+ settingsSystem.getUriFor.overload('java.lang.String').implementation = function (name) {
60
+ var data = this.getUriFor.overload('java.lang.String').call(this, name);
61
+ fusion_sendKeyValueData("Settings$System.getUriFor", [
62
+ {key: "Name", value: name},
63
+ {key: "Result", value: data}
64
+ ]);
65
+ return data
66
+ };
67
+
68
+ settingsSystem.getInt.overload('android.content.ContentResolver', 'java.lang.String', 'int').implementation = function(cr, name, flag) {
69
+ var data = this.getInt.overload('android.content.ContentResolver', 'java.lang.String', 'int').call(this, cr, name, flag);
70
+ fusion_sendKeyValueData("Settings$System.getInt", [
71
+ {key: "Name", value: name},
72
+ {key: "Flag", value: flag},
73
+ {key: "Result", value: data}
74
+ ]);
75
+
76
+ return settings_bypassValue(name, data);
77
+ }
78
+
79
+ settingsSystem.getInt.overload('android.content.ContentResolver', 'java.lang.String').implementation = function(cr, name) {
80
+ var data = this.getInt.overload('android.content.ContentResolver', 'java.lang.String').call(this, cr, name);
81
+ fusion_sendKeyValueData("Settings$System.getInt", [
82
+ {key: "Name", value: name},
83
+ {key: "Result", value: data}
84
+ ]);
85
+ return settings_bypassValue(name, data);
86
+ }
87
+
88
+ }
89
+
90
+ if (SET_MODULES.Secure) {
91
+
92
+ fusion_sendMessage('D', "Module attached: android.provider.Settings.Secure");
93
+ const settingsSecure = Java.use("android.provider.Settings$Secure");
94
+
95
+ settingsSecure.getString.overload('android.content.ContentResolver', 'java.lang.String').implementation = function (cr, name) {
96
+ var data = this.getString.overload('android.content.ContentResolver', 'java.lang.String').call(this, cr, name);
97
+ fusion_sendKeyValueData("Settings$Secure.getString", [
98
+ {key: "Name", value: name},
99
+ {key: "Result", value: data}
100
+ ]);
101
+ return data
102
+ };
103
+
104
+ settingsSecure.putString.overload('android.content.ContentResolver', 'java.lang.String', 'java.lang.String').implementation = function (cr, name, value) {
105
+ fusion_sendKeyValueData("Settings$Secure.putString", [
106
+ {key: "Name", value: name},
107
+ {key: "Value", value: value}
108
+ ]);
109
+ return this.putString.overload('android.content.ContentResolver', 'java.lang.String', 'java.lang.String').call(this, cr, name, value);
110
+ };
111
+
112
+ settingsSecure.getUriFor.overload('java.lang.String').implementation = function (name) {
113
+ var data = this.getUriFor.overload('java.lang.String').call(this, name);
114
+ fusion_sendKeyValueData("Settings$Secure.getUriFor", [
115
+ {key: "Name", value: name},
116
+ {key: "Result", value: data}
117
+ ]);
118
+ return data
119
+ };
120
+
121
+ settingsSecure.getInt.overload('android.content.ContentResolver', 'java.lang.String', 'int').implementation = function(cr, name, flag) {
122
+ var data = this.getInt.overload('android.content.ContentResolver', 'java.lang.String', 'int').call(this, cr, name, flag);
123
+ fusion_sendKeyValueData("Settings$Secure.getInt", [
124
+ {key: "Name", value: name},
125
+ {key: "Flag", value: flag},
126
+ {key: "Result", value: data}
127
+ ]);
128
+
129
+ return settings_bypassValue(name, data);
130
+ }
131
+
132
+ settingsSecure.getInt.overload('android.content.ContentResolver', 'java.lang.String').implementation = function(cr, name) {
133
+ var data = this.getInt.overload('android.content.ContentResolver', 'java.lang.String').call(this, cr, name);
134
+ fusion_sendKeyValueData("Settings$Secure.getInt", [
135
+ {key: "Name", value: name},
136
+ {key: "Result", value: data}
137
+ ]);
138
+ return settings_bypassValue(name, data);
139
+ }
140
+
141
+ }
142
+
143
+ if (SET_MODULES.Global) {
144
+
145
+ fusion_sendMessage('D', "Module attached: android.provider.Settings.Global");
146
+ const settingGlobal = Java.use('android.provider.Settings$Global');
147
+
148
+ settingGlobal.getInt.overload('android.content.ContentResolver', 'java.lang.String', 'int').implementation = function(cr, name, flag) {
149
+ var data = this.getInt.overload('android.content.ContentResolver', 'java.lang.String', 'int').call(this, cr, name, flag);
150
+ fusion_sendKeyValueData("Settings$Global.getInt", [
151
+ {key: "Name", value: name},
152
+ {key: "Flag", value: flag},
153
+ {key: "Result", value: data}
154
+ ]);
155
+ return settings_bypassValue(name, data);
156
+ }
157
+
158
+ settingGlobal.getInt.overload('android.content.ContentResolver', 'java.lang.String').implementation = function(cr, name) {
159
+ var data = this.getInt.overload('android.content.ContentResolver', 'java.lang.String').call(this, cr, name);
160
+ fusion_sendKeyValueData("Settings$Global.getInt", [
161
+ {key: "Name", value: name},
162
+ {key: "Result", value: data}
163
+ ]);
164
+ return settings_bypassValue(name, data);
165
+ }
166
+
167
+ }
168
+
169
+ fusion_sendMessage("W", "Android Settings hook module have been successfully initialized.")
170
+ });
171
+
172
+ }, 0);
@@ -0,0 +1,106 @@
1
+ import json
2
+ import os.path
3
+ from pathlib import Path
4
+ import base64
5
+ import string
6
+
7
+ from frida_fusion.libs.logger import Logger
8
+ from frida_fusion.libs.database import Database
9
+ from frida_fusion.libs.scriptlocation import ScriptLocation
10
+ from frida_fusion.module import ModuleBase
11
+
12
+
13
+ class Settings(ModuleBase):
14
+ class SettingsDB(Database):
15
+ dbName = ""
16
+
17
+ def __init__(self, db_name: str):
18
+ super().__init__(
19
+ auto_create=True,
20
+ db_name=db_name
21
+ )
22
+ self.create_db()
23
+
24
+ def create_db(self):
25
+ super().create_db()
26
+ conn = self.connect_to_db(check=False)
27
+
28
+ # definindo um cursor
29
+ cursor = conn.cursor()
30
+
31
+ # criando a tabela (schema)
32
+ cursor.execute("""
33
+ CREATE TABLE IF NOT EXISTS [android_settings] (
34
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
35
+ module TEXT NULL,
36
+ name TEXT NULL,
37
+ flag INTEGER NULL DEFAULT (0),
38
+ data TEXT NULL,
39
+ created_date datetime not null DEFAULT (datetime('now','localtime')),
40
+ UNIQUE (module, name, flag, data)
41
+ );
42
+ """)
43
+
44
+ conn.commit()
45
+
46
+ # Must get the constraints
47
+ self.get_constraints(conn)
48
+
49
+ def __init__(self):
50
+ super().__init__('Settings', 'Hook Android Settings functions')
51
+ self._settings_db = None
52
+ self.mod_path = str(Path(__file__).resolve().parent)
53
+
54
+ def start_module(self, **kwargs) -> bool:
55
+ if 'db_path' not in kwargs:
56
+ raise Exception("parameter db_path not found")
57
+
58
+ self._settings_db = Settings.SettingsDB(db_name=kwargs['db_path'])
59
+ return True
60
+
61
+ def js_files(self) -> list:
62
+ return [
63
+ os.path.join(self.mod_path, "settings.js")
64
+ ]
65
+
66
+ def key_value_event(self,
67
+ script_location: ScriptLocation = None,
68
+ stack_trace: str = None,
69
+ module: str = None,
70
+ received_data: dict = None
71
+ ) -> bool:
72
+
73
+ if module in ["Settings$Secure.getString",
74
+ "Settings$Secure.putString",
75
+ "Settings$Secure.getUriFor",
76
+ "Settings$Secure.getInt",
77
+ "Settings$System.getString",
78
+ "Settings$System.putString",
79
+ "Settings$System.getUriFor",
80
+ "Settings$System.getInt",
81
+ "Settings$Global.getInt"
82
+ ]:
83
+ name = received_data.get('name', None)
84
+ flag = received_data.get('flag', 0)
85
+ value = received_data.get('value', None)
86
+ result = received_data.get('result', value)
87
+
88
+ self._settings_db.insert_ignore_one(
89
+ table_name='android_settings',
90
+ module=module,
91
+ name=name,
92
+ flag=flag,
93
+ data=result
94
+ )
95
+
96
+ return True
97
+
98
+ def data_event(self,
99
+ script_location: ScriptLocation = None,
100
+ stack_trace: str = None,
101
+ received_data: str = None
102
+ ) -> bool:
103
+ #Nothing by now
104
+ return True
105
+
106
+
@@ -1,5 +1,5 @@
1
1
 
2
- const MODULES = {
2
+ const CRYPTO_MODULES = {
3
3
  KeyGenerator: true,
4
4
  KeyPairGenerator: true,
5
5
  SecretKeySpec: true,
@@ -20,7 +20,7 @@ setTimeout(function() {
20
20
 
21
21
  const System = Java.use("java.lang.System");
22
22
 
23
- if (MODULES.KeyGenerator) {
23
+ if (CRYPTO_MODULES.KeyGenerator) {
24
24
  fusion_sendMessage('*', "Module attached: javax.crypto.KeyGenerator");
25
25
  const keyGenerator = Java.use("javax.crypto.KeyGenerator");
26
26
 
@@ -54,7 +54,7 @@ setTimeout(function() {
54
54
 
55
55
  }
56
56
 
57
- if (MODULES.KeyPairGenerator) {
57
+ if (CRYPTO_MODULES.KeyPairGenerator) {
58
58
  fusion_sendMessage('*', "Module attached: java.security.KeyPairGenerator");
59
59
  const keyPairGenerator = Java.use("java.security.KeyPairGenerator");
60
60
  keyPairGenerator.getInstance.overload("java.lang.String").implementation = function (arg0) {
@@ -81,7 +81,7 @@ setTimeout(function() {
81
81
  };
82
82
  }
83
83
 
84
- if (MODULES.SecretKeySpec) {
84
+ if (CRYPTO_MODULES.SecretKeySpec) {
85
85
  fusion_sendMessage('*', "Module attached: javax.crypto.spec.SecretKeySpec");
86
86
  const secretKeySpec = Java.use("javax.crypto.spec.SecretKeySpec");
87
87
  secretKeySpec.$init.overload("[B", "java.lang.String").implementation = function (key, cipher) {
@@ -95,7 +95,7 @@ setTimeout(function() {
95
95
  }
96
96
  }
97
97
 
98
- if (MODULES.MessageDigest) {
98
+ if (CRYPTO_MODULES.MessageDigest) {
99
99
  fusion_sendMessage('*', "Module attached: java.security.MessageDigest");
100
100
  const messageDigest = Java.use("java.security.MessageDigest");
101
101
  messageDigest.getInstance.overload("java.lang.String").implementation = function (arg0) {
@@ -144,7 +144,7 @@ setTimeout(function() {
144
144
 
145
145
  }
146
146
 
147
- if (MODULES.SecretKeyFactory) {
147
+ if (CRYPTO_MODULES.SecretKeyFactory) {
148
148
  fusion_sendMessage('*', "Module attached: javax.crypto.SecretKeyFactory");
149
149
  const secretKeyFactory = Java.use("javax.crypto.SecretKeyFactory");
150
150
  secretKeyFactory.getInstance.overload("java.lang.String").implementation = function (arg0) {
@@ -171,7 +171,7 @@ setTimeout(function() {
171
171
  };
172
172
  }
173
173
 
174
- if (MODULES.Signature) {
174
+ if (CRYPTO_MODULES.Signature) {
175
175
  fusion_sendMessage('*', "Module attached: java.security.Signature");
176
176
  const signature = Java.use("java.security.Signature");
177
177
  signature.getInstance.overload("java.lang.String").implementation = function (arg0) {
@@ -198,7 +198,7 @@ setTimeout(function() {
198
198
  };
199
199
  }
200
200
 
201
- if (MODULES.Cipher) {
201
+ if (CRYPTO_MODULES.Cipher) {
202
202
  fusion_sendMessage('*', "Module attached: javax.crypto.Cipher");
203
203
  var iv_parameter_spec = Java.use("javax.crypto.spec.IvParameterSpec");
204
204
  var pbe_parameter_spec = Java.use("javax.crypto.spec.PBEParameterSpec");
@@ -365,7 +365,7 @@ setTimeout(function() {
365
365
  }
366
366
 
367
367
 
368
- if (MODULES.Mac) {
368
+ if (CRYPTO_MODULES.Mac) {
369
369
  fusion_sendMessage('*', "Module attached: javax.crypto.Mac");
370
370
  const mac = Java.use("javax.crypto.Mac");
371
371
  mac.getInstance.overload("java.lang.String").implementation = function (arg0) {
@@ -392,7 +392,7 @@ setTimeout(function() {
392
392
  };
393
393
  }
394
394
 
395
- if (MODULES.KeyGenParameterSpec) {
395
+ if (CRYPTO_MODULES.KeyGenParameterSpec) {
396
396
  fusion_sendMessage('*', "Module attached: android.security.keystore.KeyGenParameterSpec$Builder");
397
397
  const useKeyGen = Java.use("android.security.keystore.KeyGenParameterSpec$Builder");
398
398
  useKeyGen.$init.overload("java.lang.String", "int").implementation = function (keyStoreAlias, purpose) {
@@ -466,7 +466,7 @@ setTimeout(function() {
466
466
  }
467
467
  }
468
468
 
469
- if (MODULES.IvParameterSpec) {
469
+ if (CRYPTO_MODULES.IvParameterSpec) {
470
470
  fusion_sendMessage('*', "Module attached: javax.crypto.spec.IvParameterSpec");
471
471
  const ivParameter = Java.use("javax.crypto.spec.IvParameterSpec");
472
472
  ivParameter.$init.overload("[B").implementation = function (ivKey) {
@@ -488,7 +488,7 @@ setTimeout(function() {
488
488
  }
489
489
  }
490
490
 
491
- if (MODULES.GCMParameterSpec) {
491
+ if (CRYPTO_MODULES.GCMParameterSpec) {
492
492
  fusion_sendMessage('*', "Module attached: javax.crypto.spec.GCMParameterSpec");
493
493
  const gcmParameter = Java.use("javax.crypto.spec.GCMParameterSpec");
494
494
  gcmParameter.$init.overload("int", "[B").implementation = function (tLen, ivKey) {
@@ -512,7 +512,7 @@ setTimeout(function() {
512
512
  }
513
513
  }
514
514
 
515
- if (MODULES.PBEParameterSpec) {
515
+ if (CRYPTO_MODULES.PBEParameterSpec) {
516
516
  fusion_sendMessage('*', "Module attached: javax.crypto.spec.PBEParameterSpec");
517
517
  const pbeParameter = Java.use("javax.crypto.spec.PBEParameterSpec");
518
518
  pbeParameter.$init.overload("[B", "int").implementation = function (salt, iterationCount) {
@@ -547,7 +547,7 @@ setTimeout(function() {
547
547
  }
548
548
  }
549
549
 
550
- if (MODULES.X509EncodedKeySpec) {
550
+ if (CRYPTO_MODULES.X509EncodedKeySpec) {
551
551
  fusion_sendMessage('*', "Module attached: java.security.spec.X509EncodedKeySpec");
552
552
  const x509EncodedKeySpec = Java.use("java.security.spec.X509EncodedKeySpec");
553
553
  x509EncodedKeySpec.$init.overload("[B").implementation = function (encodedKey) {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frida-fusion
3
- Version: 0.1.10
3
+ Version: 0.1.11
4
4
  Summary: Hook your mobile tests with Frida
5
5
  Author-email: "Helvio Junior (M4v3r1ck)" <helvio_junior@hotmail.com>
6
6
  Maintainer-email: "Helvio Junior (M4v3r1ck)" <helvio_junior@hotmail.com>
@@ -22,6 +22,9 @@ frida_fusion/libs/helpers.js
22
22
  frida_fusion/libs/logger.py
23
23
  frida_fusion/libs/scriptlocation.py
24
24
  frida_fusion/modules/__init__.py
25
+ frida_fusion/modules/android_setings/__init__.py
26
+ frida_fusion/modules/android_setings/settings.js
27
+ frida_fusion/modules/android_setings/settings.py
25
28
  frida_fusion/modules/crypto/__init__.py
26
29
  frida_fusion/modules/crypto/crypto.js
27
30
  frida_fusion/modules/crypto/crypto.py
File without changes
File without changes
File without changes
File without changes