QQ浏览器HD iOS 动态化/热修复方案QBDF(0) 【简书被冻结-搬运】
原作時(shí)間:2019~2021年
此次共享,騰訊內(nèi)網(wǎng) / 外網(wǎng)同步發(fā)布。
內(nèi)部代碼地址:https://git.code.oa.com/fatboyli/QBDF
外部代碼地址:GitHub - ventureli/QBDF
兩年前的一個(gè)混淆包(無源碼):GitHub - ventureli/VLOCInterpreter
作者:騰訊fatboyli(李文強(qiáng))
回想起來從寫QBDF第一行代碼到現(xiàn)在已經(jīng)兩年半了,QBDF已經(jīng)平穩(wěn)的在線運(yùn)行連年都沒有被查到,之前因?yàn)閮?nèi)部有幾款同類商品一直在用,怕蘋果盯上,像針對(duì)JSPatch那樣符號(hào)化匹配屏蔽,所以一直沒有開源。兩年多過去了,咨詢了當(dāng)初的項(xiàng)目組。這個(gè)熱修復(fù)框架已經(jīng)內(nèi)部不再使用了,可以拿來分享給大家。本系列博客一共分以下幾個(gè)部分。
QBDF有以下特點(diǎn):
??QBDF 兼容編譯類型和運(yùn)行類型錯(cuò)誤,不會(huì)造成crash
? 不通過javascript做橋接的動(dòng)態(tài)框架,包含虛擬機(jī)和解釋器
? QBDF 兼容OC語法.
??QBDF-VM 運(yùn)行速度比WAX高167%
??QBDF 支持 “block”, “super”, “property” , “SEL” , “dispatch_xx” 等OC語法特征 ...
??QBDF 也支持c 內(nèi)存操作,比如“malloc”, “free”, “a[1]” ,“&a”, “*p”...
??QBDF 利用內(nèi)存對(duì)齊策略可以進(jìn)行Struct結(jié)構(gòu)體自定義或者和OC內(nèi)部進(jìn)行結(jié)構(gòu)體賦值
? 體驗(yàn)網(wǎng)址:https://github.com/ventureli/VLOCInterpreter
本系列包含主要兩大部分QBDF解釋器+QBDF虛擬機(jī)的部分。主要目錄如下
QQ瀏覽器HD的動(dòng)態(tài)熱修復(fù)方案的前世今生(1)
QBDF的總體架構(gòu)設(shè)計(jì)(2)
QBDF解釋器-詞法分析(3)
QBDF解釋器-從C89設(shè)計(jì)簡(jiǎn)化的OC BNF范式(4)
QBDF解釋器-詞法分析(編譯原理)(5)
QBDF解釋器-語法至導(dǎo)翻譯與遞歸子程序設(shè)計(jì)(編譯原理)(6)
QBDF解釋器-中間代碼指令設(shè)計(jì)與生成(7)
QBDF解釋器-WHILE-FOR語法糖指令翻譯與回填方案(8)
QBDF解釋器-云解釋器設(shè)計(jì)(9)?
QBDFVM-總體設(shè)計(jì)(10)
QBDFVM-Context/符號(hào)表設(shè)計(jì)(11)
QBDFVM-12條指令的翻譯(12)
QBDFVM-多線程與BLOCK設(shè)計(jì)(13)
QBDFVM-基于內(nèi)存交換的STRUCT設(shè)計(jì)(14)
QBDFVM-BLOCK內(nèi)存難點(diǎn)解決(15)
QBDFVM-Super繼承鏈的解決(16)
QBDFVM-其他難點(diǎn)與解決方案(17)
-------------------------------------
QBDFVM-不足與未來可擴(kuò)展方向(18)
總結(jié)
以上是生活随笔為你收集整理的QQ浏览器HD iOS 动态化/热修复方案QBDF(0) 【简书被冻结-搬运】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 条形码和二维码 生成以及打印
- 下一篇: 2017年html5行业报告,云适配发布