xiongzhu пре 10 месеци
родитељ
комит
2c48150151
1 измењених фајлова са 82 додато и 36 уклоњено
  1. 82 36
      scripts/gms.js

+ 82 - 36
scripts/gms.js

@@ -44,46 +44,92 @@ Java.perform(function () {
     // }
     // 定位 __system_property_read_callback 函数地址
     // 假设我们已经 hook 了 __system_property_read_callback,并获得参数 args[0] 为 pi
-    Interceptor.attach(Module.findExportByName(null, '__system_property_read_callback'), {
-        onEnter: function (args) {
-            var pi = args[0]
-            console.log('-------------------------')
-            console.log('prop_info 地址: ' + pi)
+    // Interceptor.attach(Module.findExportByName(null, '__system_property_read_callback'), {
+    //     onEnter: function (args) {
+    //         var pi = args[0]
+    //         console.log('-------------------------')
+    //         console.log('prop_info 地址: ' + pi)
 
-            // 读取 serial(4 字节)
-            var serial = Memory.readU32(pi)
-            console.log('serial: ' + serial)
+    //         // 读取 serial(4 字节)
+    //         var serial = Memory.readU32(pi)
+    //         console.log('serial: ' + serial)
 
-            // 定义 offset 值,PROP_VALUE_MAX 一般为 92
-            var PROP_VALUE_MAX = 92
+    //         // 定义 offset 值,PROP_VALUE_MAX 一般为 92
+    //         var PROP_VALUE_MAX = 92
 
-            // 读取 name,name 在 union 后,即 pi + 4 + PROP_VALUE_MAX
-            var namePtr = pi.add(4 + PROP_VALUE_MAX)
-            var nameStr = Memory.readCString(namePtr)
-            console.log('name: ' + nameStr)
+    //         // 读取 name,name 在 union 后,即 pi + 4 + PROP_VALUE_MAX
+    //         var namePtr = pi.add(4 + PROP_VALUE_MAX)
+    //         var nameStr = Memory.readCString(namePtr)
+    //         console.log('name: ' + nameStr)
 
-            var valueStr = ''
-            // 判断是否为 long 属性(is_long() 判断逻辑)
-            if ((serial & (1 << 16)) !== 0) {
-                // long 属性: offset 存在于 union.long_property.offset,
-                // offset 地址 = pi + 4 (union 开始) + 56(error_message 长度)
-                var offset = Memory.readU32(pi.add(4 + 56))
-                var longValuePtr = pi.add(offset)
-                console.log('long_property.offset: ' + offset)
-                try {
-                    valueStr = Memory.readCString(longValuePtr)
-                } catch (e) {
-                    valueStr = '读取 long_value 出错: ' + e
-                }
-            } else {
-                // 非 long 属性,值直接存储在 union.value 中,起始于 pi + 4
-                try {
-                    valueStr = Memory.readCString(pi.add(4))
-                } catch (e) {
-                    valueStr = '读取 inline value 出错: ' + e
-                }
-            }
-            console.log('value: ' + valueStr)
+    //         var valueStr = ''
+    //         // 判断是否为 long 属性(is_long() 判断逻辑)
+    //         if ((serial & (1 << 16)) !== 0) {
+    //             // long 属性: offset 存在于 union.long_property.offset,
+    //             // offset 地址 = pi + 4 (union 开始) + 56(error_message 长度)
+    //             var offset = Memory.readU32(pi.add(4 + 56))
+    //             var longValuePtr = pi.add(offset)
+    //             console.log('long_property.offset: ' + offset)
+    //             try {
+    //                 valueStr = Memory.readCString(longValuePtr)
+    //             } catch (e) {
+    //                 valueStr = '读取 long_value 出错: ' + e
+    //             }
+    //         } else {
+    //             // 非 long 属性,值直接存储在 union.value 中,起始于 pi + 4
+    //             try {
+    //                 valueStr = Memory.readCString(pi.add(4))
+    //             } catch (e) {
+    //                 valueStr = '读取 inline value 出错: ' + e
+    //             }
+    //         }
+    //         console.log('value: ' + valueStr)
+    //     }
+    // })
+
+    Interceptor.attach(Module.findExportByName(null, 'ioctl'), {
+        onEnter: function (args) {
+            Log.e('nl_socket_alloc', args[0])
+        },
+        onLeave: function (retval) {
+            Log.e('nl_socket_alloc: ' + retval)
         }
     })
+    // // var libart = Process.getModuleByName('libart.so')
+
+    // const NetworkInterface = Java.use('java.net.NetworkInterface')
+    // NetworkInterface.getNetworkInterfaces.implementation = function () {
+    //     Log.e('getNetworkInterfaces')
+    //     return this.getNetworkInterfaces()
+    // }
+
+    const File = Java.use('java.io.File')
+
+    const BufferedReader = Java.use('java.io.BufferedReader')
+    const FileInputStream = Java.use('java.io.FileInputStream')
+    const FileOutputStream = Java.use('java.io.FileOutputStream')
+    const InputStreamReader = Java.use('java.io.InputStreamReader')
+    const OutputStreamWriter = Java.use('java.io.OutputStreamWriter')
+    function readFile(file) {
+        if (!file.exists()) {
+            return null
+        }
+        var fileInputStream = FileInputStream.$new(file)
+
+        var inputStreamReader = InputStreamReader.$new(Java.cast(fileInputStream, Java.use('java.io.InputStream')))
+        var bufferedReader = BufferedReader.$new(inputStreamReader)
+        var line
+        var content = ''
+        while ((line = bufferedReader.readLine()) !== null) {
+            content += line + '\n'
+        }
+
+        bufferedReader.close()
+        inputStreamReader.close()
+        fileInputStream.close()
+
+        return content
+    }
+
+
 })