@aalzehla/capacitor-jailbreak-root-detection 0.0.8 → 1.0.0

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.
@@ -8,7 +8,7 @@
8
8
 
9
9
  import Foundation
10
10
  import UIKit
11
-
11
+ import MachO
12
12
  extension UIDevice {
13
13
  var isSimulator: Bool {
14
14
  return TARGET_OS_SIMULATOR != 0
@@ -24,6 +24,9 @@ extension UIDevice {
24
24
  if JailBrokenHelper.hasCydiaInstalled() { return true }
25
25
  if JailBrokenHelper.isContainsSuspiciousApps() { return true }
26
26
  if JailBrokenHelper.isSuspiciousSystemPathsExists() { return true }
27
+ if JailBrokenHelper.isDirectoriesWriteable() { return true }
28
+ if JailBrokenHelper.checkDYLD() { return true }
29
+ if JailBrokenHelper.isFridaRunning() { return true }
27
30
  return JailBrokenHelper.canEditSystemFiles()
28
31
  }
29
32
  }
@@ -61,7 +64,28 @@ private struct JailBrokenHelper {
61
64
  return false
62
65
  }
63
66
  }
64
-
67
+
68
+ static var directories: [String] {
69
+ return [
70
+ "/",
71
+ "/root/",
72
+ "/private/",
73
+ "/jb/",
74
+ "/basebin/"
75
+ ]
76
+ }
77
+ static func isDirectoriesWriteable() -> Bool {
78
+ // Checks if the restricted directories are writeable.
79
+ for path in directories {
80
+ do{
81
+ let filePath = path + UUID().uuidString
82
+ try "i escaped the Jail".write(toFile: filePath, atomically: true, encoding: .utf8)
83
+ try FileManager.default.removeItem(atPath: filePath)
84
+ return true
85
+ }catch let error{print(error.localizedDescription)}
86
+ }
87
+ return false
88
+ }
65
89
  /**
66
90
  Add more paths here to check for jail break
67
91
  */
@@ -74,7 +98,10 @@ private struct JailBrokenHelper {
74
98
  "/Applications/MxTube.app",
75
99
  "/Applications/RockApp.app",
76
100
  "/Applications/SBSettings.app",
77
- "/Applications/WinterBoard.app"
101
+ "/Applications/WinterBoard.app",
102
+ "/Applications/VnodeBypass.app",
103
+ "/Applications/RootHide.app",
104
+ "/Applications/Dopamine.app",
78
105
  ]
79
106
  }
80
107
 
@@ -94,7 +121,130 @@ private struct JailBrokenHelper {
94
121
  "/usr/sbin/sshd",
95
122
  "/etc/apt",
96
123
  "/bin/bash",
97
- "/Library/MobileSubstrate/MobileSubstrate.dylib"
124
+ "/Library/MobileSubstrate/MobileSubstrate.dylib",
125
+ "/usr/sbin/frida-server",
126
+ "/.bootstrapped_electra",
127
+ "/usr/lib/libjailbreak.dylib",
128
+ "/jb/lzma",
129
+ "/.cydia_no_stash",
130
+ "/.installed_unc0ver",
131
+ "/jb/offsets.plist",
132
+ "/usr/share/jailbreak/injectme.plist",
133
+ "/etc/apt/undecimus/undecimus.list",
134
+ "/var/lib/dpkg/info/mobilesubstrate.md5sums",
135
+ "/jb/jailbreakd.plist",
136
+ "/jb/amfid_payload.dylib",
137
+ "/jb/libjailbreak.dylib",
138
+ "/usr/libexec/cydia/firmware.sh",
139
+ "/var/lib/cydia",
140
+ "/private/var/Users/",
141
+ "/var/log/apt",
142
+ "/Applications/Cydia.app",
143
+ "/private/var/stash",
144
+ "/private/var/lib/cydia",
145
+ "/private/var/cache/apt/",
146
+ "/private/var/log/syslog",
147
+ "/private/var/tmp/cydia.log",
148
+ "/Applications/Icy.app",
149
+ "/Applications/MxTube.app",
150
+ "/Applications/RockApp.app",
151
+ "/Applications/blackra1n.app",
152
+ "/Applications/SBSettings.app",
153
+ "/Applications/FakeCarrier.app",
154
+ "/Applications/WinterBoard.app",
155
+ "/Applications/IntelliScreen.app",
156
+ "/private/var/mobile/Library/SBSettings/Themes",
157
+ "/Library/MobileSubstrate/CydiaSubstrate.dylib",
158
+ "/System/Library/LaunchDaemons/com.ikey.bbot.plist",
159
+ "/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
160
+ "/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
161
+ "/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
162
+ "/usr/sbin/frida-server",
163
+ "/etc/apt/sources.list.d/electra.list",
164
+ "/etc/apt/sources.list.d/sileo.sources",
165
+ "/private/var/Users/",
166
+ "/var/log/apt",
167
+ "/Applications/Cydia.app",
168
+ "/private/var/stash",
169
+ "/private/var/lib/cydia",
170
+ "/private/var/cache/apt/",
171
+ "/private/var/log/syslog",
172
+ "/private/var/tmp/cydia.log",
173
+ "/Applications/Icy.app",
174
+ "/Applications/MxTube.app",
175
+ "/Applications/RockApp.app",
176
+ "/Applications/blackra1n.app",
177
+ "/Applications/SBSettings.app",
178
+ "/Applications/FakeCarrier.app",
179
+ "/Applications/WinterBoard.app",
180
+ "/Applications/IntelliScreen.app",
181
+ "/private/var/mobile/Library/SBSettings/Themes",
182
+ "/Library/MobileSubstrate/CydiaSubstrate.dylib",
183
+ "/System/Library/LaunchDaemons/com.ikey.bbot.plist",
184
+ "/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
185
+ "/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
186
+ "/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
187
+ "/Applications/Cydia.app",
188
+ "/Applications/blackra1n.app",
189
+ "/Applications/FakeCarrier.app",
190
+ "/Applications/Icy.app",
191
+ "/Applications/IntelliScreen.app",
192
+ "/Applications/MxTube.app",
193
+ "/Applications/RockApp.app",
194
+ "/Applications/SBSettings.app",
195
+ "/Applications/WinterBoard.app",
196
+ "/Applications/Dopamine.app",
197
+
198
+ "/var/.communication/launchd_to_boomerang",
199
+ "/var/.communication/boomerang_to_launchd",
200
+ "/usr/lib/systemhook.dylib",
201
+ "/basebin/libjailbreak.dylib",
202
+ "/var/.boot_info.plist",
203
+ "/basebin/jbctl",
204
+ "/usr/bin/dpkg",
205
+ "/basebin/LaunchDaemons/com.opa334.jailbreakd.plist"
206
+ ]
207
+ }
208
+
209
+ static func checkDYLD() -> Bool {
210
+ let suspiciousLibraries = [
211
+ "FridaGadget",
212
+ "frida",
213
+ "cynject",
214
+ "libcycript"
98
215
  ]
216
+ for libraryIndex in 0..<_dyld_image_count() {
217
+
218
+ guard let loadedLibrary = String(validatingUTF8: _dyld_get_image_name(libraryIndex)) else { continue }
219
+ for suspiciousLibrary in suspiciousLibraries {
220
+ if loadedLibrary.lowercased().contains(suspiciousLibrary.lowercased()) {
221
+ return true
222
+ }
223
+ }
224
+ }
225
+ return false
226
+ }
227
+
228
+ static func isFridaRunning() -> Bool {
229
+ func swapBytesIfNeeded(port: in_port_t) -> in_port_t {
230
+ let littleEndian = Int(OSHostByteOrder()) == OSLittleEndian
231
+ return littleEndian ? _OSSwapInt16(port) : port
232
+ }
233
+
234
+ var serverAddress = sockaddr_in()
235
+ serverAddress.sin_family = sa_family_t(AF_INET)
236
+ serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1")
237
+ serverAddress.sin_port = swapBytesIfNeeded(port: in_port_t(27042))
238
+ let sock = socket(AF_INET, SOCK_STREAM, 0)
239
+
240
+ let result = withUnsafePointer(to: &serverAddress) {
241
+ $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
242
+ connect(sock, $0, socklen_t(MemoryLayout<sockaddr_in>.stride))
243
+ }
244
+ }
245
+ if result != -1 {
246
+ return true
247
+ }
248
+ return false
99
249
  }
100
250
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalzehla/capacitor-jailbreak-root-detection",
3
- "version": "0.0.8",
3
+ "version": "1.0.0",
4
4
  "description": "Jailbreak Root detection plugin for capacitor.",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",