|
|
|
[原创]从华为方舟编译器看一种JavatoC语言解释器的实现
amzilun 娃哥一针见血,不愧是老司机,其实我也觉得应该不见得是完全脱离虚拟机体系,有些地方可以适当用发射来实现JNI掉JAVA方法我又想到了arm是有java硬件加速的,就是说cpu是可以直接执行java bytecode的,不过我也不太了解arm这个东西,Android上没用应该是因为其跑的是Dalvik bytecode。 https://en.wikipedia.org/wiki/Jazelle
最后于 2019-5-6 17:42
被葫芦娃编辑
,原因:
|
|
|
|
[原创]从华为方舟编译器看一种JavatoC语言解释器的实现
Java2JNI跟脱离虚拟机还是有很大差距的,Java Native Interface归根结底跑的还是虚拟机,除了运算指令,若是调用、变量读写等依然还是使用JNI,那所谓的性能提升其实很有限,执行时其实更多的可能是虚拟机对对象的操作令得耗时。 做了一个小测试,分别使用Java和JNI来调用一个Java方法十万次,结果是JNI的耗时的Java的十倍以上,而运算指令是native比Java快2-3倍,当然并不能说明什么,因为都同样是微秒级别,并且全编完应该是JNI调JNI了,而不是JNI调Java,那样速度应该会快不少。 23:43:55.340 E/profile__: [static] java start: 1556898235326, end: 1556898235339, time: 13 23:43:55.443 E/profile__: [static] jni start: 1556898235343, end: 1556898235442, time: 99 23:44:04.287 E/profile__: [static] java start: 1556898244279, end: 1556898244287, time: 8 23:44:04.384 E/profile__: [static] jni start: 1556898244288, end: 1556898244383, time: 95 23:44:08.535 E/profile__: [static] java start: 1556898248528, end: 1556898248535, time: 7 23:44:08.636 E/profile__: [static] jni start: 1556898248536, end: 1556898248636, time: 100 23:44:10.917 E/profile__: [static] java start: 1556898250908, end: 1556898250917, time: 9 23:44:11.016 E/profile__: [static] jni start: 1556898250918, end: 1556898251015, time: 97 23:44:14.959 E/profile__: [static] java start: 1556898254950, end: 1556898254958, time: 8 23:51:12.300 E/profile__: [add] java start: 1556898672287, end: 1556898672299, time: 12 23:51:12.303 E/profile__: [add] jni start: 1556898672301, end: 1556898672303, time: 2 23:51:13.924 E/profile__: [add] java start: 1556898673916, end: 1556898673923, time: 7 23:51:13.926 E/profile__: [add] jni start: 1556898673924, end: 1556898673926, time: 2 23:51:16.125 E/profile__: [add] java start: 1556898676117, end: 1556898676124, time: 7 23:51:16.127 E/profile__: [add] jni start: 1556898676125, end: 1556898676127, time: 2 23:51:16.613 E/profile__: [add] java start: 1556898676607, end: 1556898676613, time: 6 23:51:16.615 E/profile__: [add] jni start: 1556898676613, end: 1556898676615, time: 2 不过总的来说,想要做Java2Native完全脱离虚拟机其实还是有很多东西需要去思考和解决,比如Java原生库(java.lang.*, Set, Map等)是否也需要2native编译一遍,还是按需编译,还是依然调用虚拟机,还是直接改Runtime。 华为公布的内容没怎么看,不过我猜这个可能是以编译器+Runtime的形式存在,现在看到的好像都是一些对公众公布的原理,没有说到具体细节,也不知道是否真的“完全脱离虚拟机”。
最后于 2019-5-4 00:15
被葫芦娃编辑
,原因:
|
|
[翻译]Binsec 反向有界的动态符号执行:针对混淆代码的不可行性问题
有能通用自动杠control flow flattening的嘛 |
|
[原创]基于frida的android游戏内存扫描器_初稿
good job! |
|
|
|
[求助]Android逆向之frida使用
人那是JavaScript API,Python Bindings有这些接口? |
|
|
|
[求助]xposed找不到com.tencent.mm
你打开微信了吗? |
|
[求助]一个java反编译与结果不一样 求原因所在
网易的rc4是白盒的。(不知道你这个是不是) |
|
|
|
一张图让安卓版微信崩溃、以及定位崩溃原因
"最后观察到一个现象,就是根据微信崩溃的时机,是在图像的加载之初,说明很有可能在第一帧、第二帧就出现问题" 其实是直觉告诉我第一帧、第二帧有问题的,因为这两帧长得一毛一样 |
|
|
|
[原创]SandHook 第二弹 - Xposed API 兼容 & 指令检查 & 进程注入
坑大 谢了,那个 Zygote 注入代码应该是你的吧[em_19]擦..还真是,其实那是个极度不稳定的代码,因为我连自己都没测过。。。。。 |
|
[原创]SandHook 第二弹 - Xposed API 兼容 & 指令检查 & 进程注入
https://github.com/lizhangqu/dlfcn_compat |
|
[原创]Virtual Andriod Debug X86 模拟器专用调试器
666啊,没想到真的有人花精力把这个实现了 |
|
[原创]c/c++反混淆方法
Triton不支持arm+1 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值