一僵蛛、為什么要使用jni加固
其實(shí)以前都不是很了解jni互纯,沒怎么用過瑟幕。 因?yàn)閖ni的使用場景要么是提供超過java的性能,要么跨平臺(tái)android留潦、ios都可以使用只盹。這種so在條件允許的情況會(huì)有人專門負(fù)責(zé),不需要app層去處理。
之前做過一個(gè)android加固相關(guān)的兔院,通過jni把部分重要的邏輯放到c層殖卑,這樣可以防止app被反編譯后輕易找到那部分邏輯。當(dāng)然如果用c寫覺得麻煩(涉及到j(luò)ava其他庫依賴庫或者模塊依賴等)坊萝,可以通過java->c->java 其實(shí)不用寫什么c代碼也可以起到加固作用孵稽。
二许起、使用jni加固的基本流程
- 選定進(jìn)入jni的入口
- 選定so里面通過路徑查找的java類 需要keep住
- 基于以前破解的方法,制定惡意的邏輯菩鲜。只要敢改代碼二次打包园细,就入坑
- 簽名檢驗(yàn)可以考慮下沉到so做
三、java->c->java注意點(diǎn)
1.findClass(path)不能混淆接校,不然找到該類猛频。但是混淆后,容易被顧名思義蛛勉。這時(shí)要處理鹿寻,比如不混淆也看不懂的代碼
2.抖一些小機(jī)靈,比如埋雷诽凌,只要被串改了就出問題之類的