function findAddrByName(namespaze){
for
(var t
=
0
;t<s_ImagesCount;t
+
+
){
var t_addr
=
s_ImagesTable.add(
52
*
t)
var t_name
=
s_ImagesTable.add(
52
*
t).add(p_size).readPointer().readCString()
if
(t_name
=
=
namespaze)
return
ptr(t_addr)
}
return
ptr(
0x0
)
}
function showAddr(namespaze,className,functionName,argsCount){
Interceptor.detachAll()
Il2CppImage
=
findAddrByName(namespaze)
if
(Il2CppImage
=
=
0
) {
console.warn(
"Il2CppImage addr not found!"
)
return
}
console.warn(
"---------------------------------------------------------"
)
console.error(namespaze
+
"."
+
className
+
"."
+
functionName)
console.warn(
"----------------------------"
)
console.log(
"Il2CppImage\t---->\t "
+
Il2CppImage)
/
/
Il2CppClass
*
il2cpp_class_from_name(const Il2CppImage
*
image, const char
*
namespaze, const char
*
name)
var il2cpp_class_from_name
=
new NativeFunction(
Module.findExportByName(soName,
"il2cpp_class_from_name"
),
'pointer'
,[
'pointer'
,
'pointer'
,
'pointer'
])
/
/
const MethodInfo
*
il2cpp_class_get_method_from_name(Il2CppClass
*
klass, const char
*
name,
int
argsCount)
var il2cpp_class_get_method_from_name
=
new NativeFunction(
Module.findExportByName(soName,
"il2cpp_class_get_method_from_name"
),
'pointer'
,[
'pointer'
,
'pointer'
,
'int'
])
var namespaze_t
=
Memory.allocUtf8String(namespaze)
var className_t
=
Memory.allocUtf8String(className)
var functionName_t
=
Memory.allocUtf8String(functionName)
var Il2CppClass
=
il2cpp_class_from_name(Il2CppImage,namespaze_t,className_t)
console.log(
"Il2CppClass\t---->\t"
,Il2CppClass)
var MethodInfo
=
il2cpp_class_get_method_from_name(Il2CppClass,functionName_t,argsCount)
console.log(
"MethodInfo\t---->\t"
,MethodInfo)
console.log(
"\x1b[36mmethodPointer\t---->\t "
+
MethodInfo.readPointer()
+
"\t ===> \t"
+
MethodInfo.readPointer().sub(soAddr)
+
"\x1b[0m"
)
console.warn(
"---------------------------------------------------------"
)
}