Java.cast 与 Java.array
☕ Frida 的 Java 类型转换与数组构造 API。
Java.cast
把 Java 对象转成指定类型:
javascript
var X509Certificate = Java.use("java.security.cert.X509Certificate");
var p7X509 = Java.cast(p7, X509Certificate); // p7 转 X509Certificater0capture 在 storeP12 里把证书对象 cast 成 X509Certificate,才能放进证书链数组。
Java.array
构造 Java 数组:
javascript
var chain = Java.array("java.security.cert.X509Certificate", [p7X509]);
// 元素类型: "java.security.cert.X509Certificate"
// 元素: [p7X509] (单元素数组)r0capture 构造单元素证书链数组,传给 KeyStore.setKeyEntry。
selftest 里的 cast
javascript
var c = Java.cast(U.$new(url).openConnection(), H);
// URL.openConnection() 返回 URLConnection, cast 成 HttpURLConnectionopenConnection() 返回父类型 URLConnection,cast 成子类 HttpURLConnection 才能调 setRequestMethod 等方法。
常见类型字符串
| 类型字符串 | Java 类型 |
|---|---|
"java.security.cert.X509Certificate" | X509 证书 |
"java.security.cert.X509Certificate[]" | X509 证书数组(array 用) |
"java.lang.String" | String |
"byte[]" / "[B" | byte[] |