android多開器解析與檢測實現(xiàn)方法示例
多開理論基礎(chǔ)
app多開常用于做一些不合法的事情,如高羊毛,黑灰產(chǎn),甚至?xí)pp的功能做破壞修改。因此多開在實際app應(yīng)用中是有一定危害性的,因此對多開環(huán)境的識別是很重要的,通過識別多開環(huán)境有利于讓app更加安全。
目前市面上的多開App的原理類似,都是以新進程運行被多開的App,并hook各類系統(tǒng)函數(shù),使被多開的App認為自己是一個正常的App在運行。
從形式上來說多開App有2種形式,一種是從多開App中直接加載被多開的App,如平行空間、VirtualApp等,另一種是讓用戶新安裝一個App,但這個App本質(zhì)上就是一個殼,用來加載被多開的App,其原理和前一種是一樣的,市面上多開分身這款A(yù)pp是用的這種形式,用戶每分身一個App需新安裝一個包名為dkmodel.xxx.xxx的App。
多開實現(xiàn)原理解析
app多開實現(xiàn)原理很多種類,如采用多用戶方式(mumu模擬器的多開器實現(xiàn))、通過創(chuàng)建不同進程名稱(多開分身、雙開助手)進行運行。
我們知道在每一個的app都有屬于自己的私有目錄,一般是“/data/data/包名/”或“/data/user/用戶號/包名”,多開方式也是基于這些去做處理的,那么我們就可以通過調(diào)用系統(tǒng)getFilesDir()方法可以讀取到私有目錄下的信息目錄。在多開環(huán)境下,獲取到目錄會變?yōu)椤?data/data/多開包名/xxxxxxxx”或“/data/user/用戶號/多開App的包名”。
基于以上的原理分析,就可以通過以下代碼實現(xiàn)對多開環(huán)境的判斷識別了。
代碼實現(xiàn):多開包名
//用于收集可以實現(xiàn)多開的app包名,已收集到最新市面上的大部分多開app private String[] packagename = { "com.bly.dkplat",//多開分身本身的包名 "com.by.chaos",//chaos引擎 "com.lbe.parallel",//平行空間 "com.excelliance.dualaid",//雙開助手 "com.lody.virtual",//VirtualXposed,VirtualApp "com.qihoo.magic",//360分身大師 "com.dual.dualgenius", //DualGenius/雙開精靈 "com.jiubang.commerce.gomultiple" //GO Multiple/Go雙開 }; 通過讀取文件包的方式進行比對 public boolean checkPrivateFilePath(Context context) { String path = context.getFilesDir().getPath(); for(String vtpkg: packagename) { if(path.contains(vtpkg)) { return true; } } return false; }
通過讀取文件包的方式進行比對
public boolean checkPrivateFilePath(Context context) { String path = context.getFilesDir().getPath(); for(String vtpkg: packagename) { if(path.contains(vtpkg)) { return true; } } return false; }
代碼實現(xiàn):多用戶
private String GetMulData() { //通過讀取命令行方式實現(xiàn)。 String filter = exec("cat /proc/self/cgroup"); if(null == filter || (filter.length() == 0)) { return null; } int uidStartIndex = filter.lastIndexOf("uid"); int uidEndIndex = filter.lastIndexOf("/pid"); if(0 > uidStartIndex) { return null; } if( 0 >= uidEndIndex) { uidEndIndex = filter.length(); } filter = filter.substring(uidStartIndex + 4, uidEndIndex); try { String strUid = filter.replaceAll("\n", ""); if(isNumeriToUid(strUid)) { int uid = Integer.valueOf(strUid); filter = String.format("u0_a%d", uid -10000); return filter; } }catch (Exception e) { return null; } return null; }
總結(jié)
到此這篇關(guān)于android多開器解析與檢測實現(xiàn)的文章就介紹到這了,更多相關(guān)android多開器解析與檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Compose制作抖音快手視頻進度條Loading動畫效果
這篇文章主要為大家介紹了使用Compose制作抖音快手視頻進度條Loading動畫效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08Flutter學(xué)習(xí)LogUtil封裝與實現(xiàn)實例詳解
這篇文章主要為大家介紹了Flutter學(xué)習(xí)LogUtil封裝與實現(xiàn)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09Android 出現(xiàn)問題Installation error: INSTALL_FAILED_CONFLICTING_P
這篇文章主要介紹了Android 出現(xiàn)問題Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12