????????????dexElements?б????????????element.dexFile???????loadClassBinaryName????????????????????????null????????????????????Class???????????dexElements????????DexPathList????????????????????
????this.dexElements = makeDexElements(splitDexPath(dexPath)?? optimizedDirectory?? suppressedExceptions);
????makeDexElements??????????????????????????dexPath???????μ??????dex??????????????BaseDexClassLoader???и?pathList????pathList?а??????DexFile?????dexElements??????????????????????????????DexFile?????
?????????????????????????dexElements??????Щ???飬?????????????????????????????patch.jar????????????????????????findClass????????????????????????????bug????
???????ClassLoader??????????dex????????dex????????Element?????dex??????г?????????????dexElements????????????????????dex?????????????????dex????????????????????????????????????dex???????????
???????JVM?У?ClassLoader????defineClass??????????Android??defineClass???????????????loadClass?????????????????????????DexFile?У???DexFile?м????????巽?????defineClass
????ClassLoader????
???????ClassLoader?????????????ClassLoader??????????????????????????????????????′?????????????????ClassLoader??????????????????????????????μ?????????????????????????????????ε??????????????
??????????ClassLoader?????????APP?????????BUG??????????????APP??????Ч??
???????????ClassLoader???????????jni hook?????????????д????????????????Native????????????????????????????????????????jni hook??????????????????????Ч??
???????????dexposed??AndFix??????jni hook????
????Android??????????Java?????????????????鷳??????
???????ClassLoader????????????????????????????飬?????????????????????μ????д???????????????????Java??????Android?????????????????????????鷳??????
????Android????????????Activity??Service??????????Manifest???????????????????????????????????????????????????????????μ????????????????????????????????
????Res?????Android?????о???????????Android?????Щ?????????R.id???????????????ЩID??Resource????л?????????????????????????????????????????????????R.id??????????????????????????????????????????????ID?????????е?Resource????б???????ID??????
?????????????Android?????????Java??????????????????????????????Context???????
????Android??context??????????????????????????????????Щ????Res?????????????????Android??????????У?????????????????????θ??????????????????????????
??????????Ч??
???????????????????sdk????????????????????????????????Patch?????????????????????????bug??
???????????
?????????????????????????????????????????
?????????????????????????????
??????Сbug???????????????????????????Χ??
??????????????????????????????
????????????????
??????????Android??ClassLoader??????Android???PathClassLoader??????????????DexClassLoader?????.jar??.apk???????????????classes.dex?????
???????????????????????????Android??????????????????DexClassLoader??????????????????????????????????????е???????????????飬??????????????????????????DexClassLoader?????????
???????????????????BaseDexClassLoader?е?pathList????pathList?а??????DexFile?????dexElements??????????????dexElements??????Щ???飬?????????????????????????????patch.jar??????????????????
???????????????????findClass????????????????????????????????bug????????????????????????CLASS_ISPREVERIFIED???????App????????????????????
???????????????
?????????????Android?е??????????????????????
????DexPathList?????е?dexElements?б???????????????????????????????????????????dex??????????dexElements???????dex????С?
????exElements?г?????????????????dexElements???????dex?????????????Class?????????????????????
????????????????hot fix??????????????pacth dex?????????dexElements?б????檔
??????????????????????????????????PathClassLoader.pathList.dexElements????????Щ???????private??????????????????????
?????????????????????dex??????????dexElements?????????????????????????????????
??????????????DexClassLoader???????????????dex???
???????????dexClassLoader.loadClass(dummyClassName)????
????????dexClassLoader.pathList.dexElements?л?????????dex
?????????dexClassLoader.pathList.dexElements??????????classLoader.pathList.dexElements?б???棬????????????????????dex?е?????????????????????
????????????
???????????????????????????????????????????????hook????????????????????????????????????????????????????????????????????????????????????
?????????classloader???????????????????????????????????????????????????????????????????????????????????????????loadClass?????????????????????′??????????С?
????Android????У????????????????????????????????????????????
????1.???????so??
????2.???????dex/jar/apk?????????????????
??????????????????
????1.???????????Dex???????????????????
????2.??APK????????????????????Dex?????????д?????????????????Щ??????檔
????3.Android??????е??????????????ЩDex???????????????
????4.??????APK???????????????????????????????Dex???????????????????????????Dex?????????
???????????????????洢????????????????
?????????????????????APK??????е?Dex????????????????????????????????е????????????????????μ?Dex?????ɡ?
?????????????????????Android???????????????????????μ?dex????????????bug???“?滻”????????????????bug????????????ν??Hot Fix??
??????????·?????????????????????к????????????????Android??????к????????????
???????????????????????????