https://github.com/aprz512/Android-Crack/tree/master/unicorn
模拟LV4方法的执行。
搜索一下方法,发现没有lv4:

那就是动态注册了。
去看JNI_OnLoad方法:
jint JNI_OnLoad(JavaVM *vm, void *reserved)
{
int Class; // r0
_JNIEnv *v5; // [sp+20h] [bp-10h] BYREF
v5 = 0;
CheckPort23946ByTcp();
readStatus();
_JavaVM::GetEnv((_JavaVM *)vm, (void **)&v5, 65540);
Class = _JNIEnv::FindClass(v5, "com/sec/udemo/MainActivity");
_JNIEnv::RegisterNatives(v5, Class, off_1D550, 1);
return 65540;
}
看off_1D550:
.data.rel.ro:0001D550 FA 9D 01 00 off_1D550 DCD aSignLv4 ; DATA XREF: JNI_OnLoad+52↑o
.data.rel.ro:0001D550 ; JNI_OnLoad+54↑o
.data.rel.ro:0001D550 ; .text:off_AA5C↑o
.data.rel.ro:0001D550 ; "sign_lv4"
.data.rel.ro:0001D554 6D 9C 01 00 DCD aLjavaLangStrin ; "(Ljava/lang/String;)Ljava/lang/String;"
确认sign_lv4是动态注册的。
上一篇使用了无名侠修改过的项目,这里补下其他资料,作者也是摸着石头过河,来一起讨论啊:
https://bbs.kanxue.com/thread-253868.htm
github: https://github.com/P4nda0s/AndroidNativeEmu
笔记: https://app.yinxiang.com/fx/a6cc6633-a93f-4111-a06a-cccd5fa39e0f
我们先按照上一篇的逻辑,直接调用一下lv4方法: