版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
安卓app逆向與安全防護(hù)目錄1.課程目標(biāo)2.市場(chǎng)狀況3.逆向工具使用4.加解密基礎(chǔ)5.協(xié)議分析6.app殼7.安全防護(hù)1.學(xué)會(huì)什么以及如何學(xué)習(xí)2.移動(dòng)領(lǐng)域安卓方向的app市場(chǎng)的安全狀況3.逆向工具的介紹與使用4.常見(jiàn)加解密與壓縮算法5.App的網(wǎng)絡(luò)協(xié)議分析技巧6.常見(jiàn)app加固廠商脫殼方法研究7.如何編寫(xiě)更安全的app課程目標(biāo)1.什么是逆向工程2.為什么要學(xué)習(xí)安卓逆向3.如何學(xué)習(xí)安卓逆向4.如何學(xué)習(xí)其它平臺(tái)的逆向工程技術(shù)什么是逆向工程來(lái)自維基百科的定義:https:///zh-hans/逆向工程逆向工程(又稱(chēng)反向工程),是一種技術(shù)過(guò)程,即對(duì)一項(xiàng)目標(biāo)產(chǎn)品進(jìn)行逆向分析及研究,從而演繹并得出該產(chǎn)品的處理流程、組織結(jié)構(gòu)、功能性能規(guī)格等設(shè)計(jì)要素,以制作出功能相近,但又不完全一樣的產(chǎn)品。逆向工程源于商業(yè)及軍事領(lǐng)域中的硬件分析。其主要目的是,在不能輕易獲得必要的生產(chǎn)信息下,直接從成品的分析,推導(dǎo)出產(chǎn)品的設(shè)計(jì)原理。逆向工程可能會(huì)被誤認(rèn)為是對(duì)知識(shí)產(chǎn)權(quán)的嚴(yán)重侵害,但是在實(shí)際應(yīng)用上,反而可能會(huì)保護(hù)知識(shí)產(chǎn)權(quán)所有者。例如在集成電路領(lǐng)域,如果懷疑某公司侵犯知識(shí)產(chǎn)權(quán),可以用逆向工程技術(shù)來(lái)尋找證據(jù)。對(duì)最終程序的二進(jìn)制代碼所進(jìn)行的逆向工程被稱(chēng)為“代碼反向工程”,或簡(jiǎn)稱(chēng)RCE(ReverseCodeEngineering)。為什么要學(xué)習(xí)安卓逆向逆向技術(shù)常見(jiàn)的應(yīng)用場(chǎng)景app安全審查系統(tǒng)漏洞挖掘惡意代碼殺查同行業(yè)競(jìng)品技術(shù)原理分析移除安全機(jī)制如何學(xué)習(xí)安卓逆向知識(shí)點(diǎn)Java基礎(chǔ)(JCA、JSSE)文件格式(DEX、OAT、ELF、Smali、resources.arsc)Smali閱讀、arm反匯編閱讀Apktool、smali/baksmali、enjarify、android-classyshark、jadx、JD-GUI、BytecodeViewer、AndroidKiller的使用JEB、jdb、AndroidStudio/IntellijIDEA、gdb、IDAPro的使用如何學(xué)習(xí)其它平臺(tái)的逆向工程技術(shù)需要掌握的技能表操作系統(tǒng)的安全架構(gòu)操作系統(tǒng)中可執(zhí)行文件格式反匯編工具的使用反匯編代碼的閱讀理解調(diào)試器的使用網(wǎng)絡(luò)抓包工具的使用加解密知識(shí)市場(chǎng)狀況1.安卓App安全形勢(shì)2.安卓系統(tǒng)安全形勢(shì)3.安卓逆向工程師市場(chǎng)需求安卓App安全形勢(shì)阿里移動(dòng)安全漏洞年報(bào)安卓系統(tǒng)安全形勢(shì)阿里移動(dòng)安全漏洞年報(bào)安卓逆向工程師市場(chǎng)需求看雪論壇招聘專(zhuān)區(qū)逆向工具使用1.反編譯工具
Apktool/Shakaapktool、smali/baksmali、dex2jar、enjarify2.靜態(tài)分析工具
android-classyshark、jadx、JD-GUI、BytecodeViewer、AndroidKiller的使用3.動(dòng)態(tài)調(diào)試工具 JEB、jdb、AndroidStudio/IntellijIDEA、gdb、IDAPro的使用4.Hook框架 Cydia
Substrate、Xposed、adbi、Frida等。5.沙盒環(huán)境
DroidBox
反編譯工具Apktool
/iBotPeaches/apktool/Shakaapktool
/shakaapktool/為什么選擇Shakaapktool?Shaka(沙加,黃金圣斗士之一)處女座沙加(SHAKA):被譽(yù)為最接近神的圣斗士,平時(shí)閉著雙眼,但當(dāng)他張開(kāi)眼睛時(shí),其力量會(huì)大為增加,并使出天舞寶輪,奪去敵人的五感。反編譯工具Shakaapktool
/shakaapktool/增強(qiáng)功能:反編譯工具Shakaapktool
/shakaapktool/對(duì)抗反反編譯:反編譯工具Shakaapktool
/shakaapktool/修正官方Bug:反編譯工具smali/baksmalihttps:///JesusFreke/smali安卓反匯編的基石Smali反匯編Smali動(dòng)態(tài)調(diào)試->smalideaSmali->Dex/Dex->Smali/Odex->Dex反編譯工具smali/baksmalihttps:///JesusFreke/smaliDex字節(jié)碼:https:///devices/tech/dalvik/dalvik-bytecode.htmlDex文件格式:https:///devices/tech/dalvik/dex-format.htmlSmali動(dòng)態(tài)調(diào)試:https:///JesusFreke/smali/wiki/smalideaSmali寄存器與參數(shù)傳遞:https:///JesusFreke/smali/wiki/Registers反編譯工具Dex2jar
https:///pxb1988/dex2jarEnjarify
https:///google/enjarify反編譯工具Dex2jar
https:///pxb1988/dex2jarEnjarify
https:///google/enjarifyVS反編譯工具AndroidCrackTool/thread-1194-1-1.htmlAndroid逆向助手http:///kgdiwss靜態(tài)分析工具JD-GUIhttp://jd.benow.ca/靜態(tài)分析工具android-classyshark
https:///google/android-classyshark靜態(tài)分析工具jadx
https:///skylot/jadx靜態(tài)分析工具BytecodeViewerhttps:///Konloch/bytecode-viewer靜態(tài)分析工具AndroidKiller動(dòng)態(tài)調(diào)試工具DalvikDebuggerjdbadbshellamstart-D-ncom.droider.crackme0201/.MainActivitymonitorjdb-connectcom.sun.jdi.SocketAttach:port=8700,hostname=methodscom.tencent.crackme0201.MainActivitystopincom.droider.crackme0201.MainActivity.checkSN(java.lang.String,java.lang.String)wherestepstepsteplocalsdumpthis動(dòng)態(tài)調(diào)試工具DalvikDebuggerAndroidStudio/IntellijIDEA+smalidea/JesusFreke/smali/wiki/smalidea動(dòng)態(tài)調(diào)試工具NativeDebuggergdbgdb:~/Library/Android/android-ndk-r12b/prebuilt/darwin-x86_64/bin/gdbgdbserver:~/Library/Android/android-ndk-r12b/prebuilt/android-arm/gdbserver動(dòng)態(tài)調(diào)試工具NativeDebuggergdbgdbserver:3333--attachpidorgdbserver:3333/data/local/tmp/xxx/*android_gdb#!/bin/sh~/Library/Android/android-ndk-r12b/prebuilt/darwin-x86_64/bin/gdb"$@”*/adbforwardtcp:3333tcp:3333android_gdb/xxx(gdb)targetremote:3333(gdb)setdisassemble-nexton(gdb)break*xxx(gdb)layoutasm(gdb)layoutregs(gdb)c...動(dòng)態(tài)調(diào)試工具NativeDebuggergdb+AffinicDebugger動(dòng)態(tài)調(diào)試工具NativeDebuggerlldb+ds2/facebook/ds2動(dòng)態(tài)調(diào)試工具DalvikDebugger+NativeDebuggerJEB2https://動(dòng)態(tài)調(diào)試工具DalvikDebugger+NativeDebuggerIDAProHook框架JEB2監(jiān)聽(tīng)調(diào)試事件Hook框架CydiaSubstratehttp://DumpDex:https:///WooyunDota/DumpDexHook框架Xposed
https:///rovo89/Xposed最為強(qiáng)大的安卓Java層Hook框架1.Apk方法Hook2.系統(tǒng)方法Hook3.系統(tǒng)資源修改4.系統(tǒng)增強(qiáng)補(bǔ)丁Hook框架Xposed
https:///rovo89/Xposed最為強(qiáng)大的安卓Java層Hook框架1.Apk方法Hook
publicvoidhookMethod(ClassLoaderclassLoader){
try{
XposedBridge.log("nowhookcrypt...");
Class<?>clzAC=XposedHelpers.findClass("com.cxx.b.ac",classLoader); XposedBridge.hookAllMethods(clzAC,"h",newHookedMD5Method()); }catch(Throwablet){
XposedBridge.log(t);
}}publicstaticclassHookedMD5MethodextendsXC_MethodHook{
@Override
protectedvoidafterHookedMethod(MethodHookParamparam)throwsThrowable{
CommLog.e(TAG,"after"+param.method.getName()+"...");
Stringr0=(String)param.args[0]; Stringret=(String)param.getResult();
Stringpre=param.method.getName(); CommLog.e(TAG,pre+"data:"+r0); CommLog.e(TAG,pre+"ret:"+ret); super.afterHookedMethod(param);
}}微信搶紅包?聊天消息防撤回?/fkzhang/WechatUnrecalledHook框架Xposed
https:///rovo89/Xposed最為強(qiáng)大的安卓Java層Hook框架2.系統(tǒng)方法Hookhttps:///AndroidKnife/XposedDebughttps:///rovo89/XposedInstallerHook框架Xposed
https:///rovo89/Xposed最為強(qiáng)大的安卓Java層Hook框架3.系統(tǒng)資源修改http:///module-overviewHook框架Xposed
https:///rovo89/Xposed最為強(qiáng)大的安卓Java層Hook框架4.系統(tǒng)增強(qiáng)補(bǔ)丁AppSettings:https:///rovo89/XposedAppSettingsXprivacy:https:///M66B/XPrivacyNekoSMS
https:///apsun/NekoSMS…...Hook框架adbi
https:///crmulliner/adbi鷹眼https:///MindMac/AndroidEagleEyeHook框架Fridahttps:///frida/fridaHookNative,打印調(diào)用參數(shù)HookJava:加解密基礎(chǔ)1.安卓中的JCA與JSSE2.對(duì)稱(chēng)加密3.非對(duì)稱(chēng)加密4.數(shù)字證書(shū)5.算法工具安卓中的JCA與JSSEJCA(JavaCryptographyArchitecture)設(shè)計(jì)原則:1.實(shí)現(xiàn)的獨(dú)立性與互用性2.算法的獨(dú)立性與擴(kuò)展性實(shí)現(xiàn)的獨(dú)立性-使用密碼學(xué)服務(wù)(cryptographicservices),加密解密、數(shù)字
簽名、數(shù)據(jù)摘要等算法的實(shí)現(xiàn)都基于這些概念。算法的獨(dú)立性-使用基于provider的架構(gòu),
CryptographicServiceProvider(CSP)
必須實(shí)現(xiàn)一個(gè)或多個(gè)密碼學(xué)服務(wù)。實(shí)現(xiàn)的互用性-每個(gè)實(shí)現(xiàn)能夠協(xié)同合作,如密鑰的使用、簽名的驗(yàn)證,對(duì)于同一
個(gè)算法而言,
providerA生成的密鑰要能被providerB使用,
providerA生成的簽名要能被providerB驗(yàn)證。算法的擴(kuò)展性-新算法要易于添加。安卓中的JCA與JSSECSP(
CryptographicServiceProviders)MessageDigestmd=MessageDigest.getInstance("MD5");MessageDigestmd=MessageDigest.getInstance("MD5","ProviderC");安卓中的JCA與JSSECSP(
CryptographicServiceProviders)Provider[]providers=java.security.Security.getProviders();for(Providerp:providers){ System.out.printf("%s/%s/%f\n",p.getName(),p.getInfo(),p.getVersion()); Set<Provider.Service>services=p.getServices(); for(Provider.Services:services){ System.out.printf("\t%s/%s/%s\n",s.getType(), s.getAlgorithm(),s.getClassName()); }}Android中的Provider安卓中的JCA與JSSECSP(
CryptographicServiceProviders)Android中的ProviderAndroid4.4:AndroidOpenSSL/Android'sOpenSSL-backedsecurityprovider/1.000000DRLCertFactory/ASN.1,DER,PkiPath,PKCS7/1.000000BC/BouncyCastleSecurityProviderv1.49/1.490000Crypto/HARMONY(SHA1digest;SecureRandom;SHA1withDSAsignature)/1.000000HarmonyJSSE/HarmonyJSSEProvider/1.000000AndroidKeyStore/AndroidKeyStoresecurityprovider/1.000000Android6.0.1:AndroidOpenSSL/Android'sOpenSSL-backedsecurityprovider/1.000000AndroidKeyStoreBCWorkaround/AndroidKeyStoresecurityprovidertoworkaroundBC/1.000000BC/BouncyCastleSecurityProviderv1.52/1.520000Crypto/HARMONY(SHA1digest;SecureRandom;SHA1withDSAsignature)/1.000000HarmonyJSSE/HarmonyJSSEProvider/1.000000AndroidKeyStore/AndroidKeyStoresecurityprovider/1.000000AndroidN:Deprecated?http:///2016/06/security-crypto-provider-deprecated-in.html安卓中的JCA與JSSESPI(ServiceProviderInterface)JCA主要的API:引擎類(lèi)與算法:加解密操作、密鑰與算法參數(shù)轉(zhuǎn)換、對(duì)象高層表示Providers中的接口通過(guò)SPI定義。Signature
->SignatureSpiCipher->CipherSpiJCA主要的API:核心類(lèi)與接口:安卓中的JCA與JSSESPI(ServiceProviderInterface)安全相關(guān)的API:java.securityjavax.cryptojava.security.certjava.security.specjavax.crypto.specerfaceserfacesimportjavax.crypto.*;Cipherc=Cipher.getInstance("AES");c.init(ENCRYPT_MODE,key);安卓中的JCA與JSSEKeyStore密鑰存儲(chǔ)KeyStore類(lèi)型:1.jks。SunJCE
Provider提供,安卓中無(wú)法使用。2.bks。BCProvider提供,安卓默認(rèn)支持。3.pkcs12。JDKPKCS12KeyStore,BCProvider提供,安卓默認(rèn)支持。4.dks。Domain
KeyStore。不常用。bks:pkcs12:安卓中的JCA與JSSEJSSE(JavaSecureSocketExtension)JSSE的用途:為Java版本的SSL(SecureSocketsLayer
)與
TLS(TransportLayerSecurity)提供框架實(shí)現(xiàn)。JSSE標(biāo)準(zhǔn)API:1.ServerSocketFactory、SocketFactory2.非阻塞引擎用于處理SSL/TLS數(shù)據(jù)流(SSLEngine)3.創(chuàng)建套接字、服務(wù)套接字、SSL服務(wù)套接字以及使用的類(lèi)4.套接字的類(lèi)表示:安全套接字上下文類(lèi)、安全工廠類(lèi)與引擎類(lèi)5.密鑰與信任管理器接口(X509KeyManager、X509TrustManager)安卓JSSE中的Provider:HarmonyJSSEProvider:舊版本使用,代碼基于Java實(shí)現(xiàn)。OpenSSLProvider:新版本使用,代碼基于JNINative調(diào)用。安卓中的JCA與JSSE安卓中的證書(shū)綁定(CertPinning)https:///training/articles/security-ssl.html安卓中的JCA與JSSE繞過(guò)證書(shū)綁定!?。。˙reakingCertPinning)Hook繞過(guò)基于Xposed:JustTrustMehttps:///Fuzion24/JustTrustMe基于Substrate:Android-SSL-TrustKillerhttps:///iSECPartners/Android-SSL-TrustKiller對(duì)稱(chēng)加密Cipher類(lèi)algorithm/mode/paddingalgorithm:算法。AES、DES、DESede等。mode:分組模式。ECB、CBC、CFB、OFB、CTR等。padding:填充模式。PKCS5Padding、PKCS7Padding、NoPadding、ZeroPadding對(duì)稱(chēng)加密常見(jiàn)的對(duì)稱(chēng)加密算法非對(duì)稱(chēng)加密Cipher類(lèi)algorithm/mode/paddingalgorithm:算法。RSA、DSA等。mode:分組模式。ECB。padding:填充模式。PKCS1Padding、NoPadding非對(duì)稱(chēng)加密公鑰與私鑰存儲(chǔ)格式:DER(DistinguishedEncodingRules):區(qū)分編碼規(guī)則。二進(jìn)制格式,記錄的第一個(gè)字段信息是一個(gè)
ASN.1(AbstractSyntaxNotationOne)對(duì)象。DER可用于編碼公鑰、私鑰與證書(shū)。PEM(PrivacyEnhancedMail):保密郵件的編碼標(biāo)準(zhǔn)。信息轉(zhuǎn)換為ASCII碼或其他編碼,使用BASE64對(duì)
加密后的信息進(jìn)行編碼。DER可用于編碼公鑰、私鑰與證書(shū)。XML:一些密碼學(xué)的庫(kù)支持使用XML保存公鑰與私鑰信息。存儲(chǔ)規(guī)范:PKCS#1:RSAPublic/PrivateKeyfile。Java默認(rèn)支持。PKCS#8:Public/PrivateKeyfile。OpenSSL默認(rèn)支持。ASN.1git:///libtasn1.git非對(duì)稱(chēng)加密公鑰與私鑰-DERwithPKCS#1DERPrivateKey:
DERPublicKey:
->->非對(duì)稱(chēng)加密公鑰與私鑰-DER
withPKCS#8DERPrivateKey:
DERPublicKey:
->->非對(duì)稱(chēng)加密公鑰與私鑰-PEMwithPKCS#1PEMPrivateKey:
PEMPublicKey:
非對(duì)稱(chēng)加密公鑰與私鑰-PEMwithPKCS#8PEMPrivateKey:
PEMPublicKey:
非對(duì)稱(chēng)加密公鑰與私鑰-XMLXMLPrivateKey:
PEMPublicKey:
數(shù)字證書(shū)什么是數(shù)字證書(shū)?數(shù)字證書(shū)是一個(gè)經(jīng)證書(shū)授權(quán)中心數(shù)字簽名的包含公開(kāi)密鑰擁有者信息以及公開(kāi)密鑰的文件。最簡(jiǎn)單的證書(shū)包含一個(gè)公開(kāi)密鑰、名稱(chēng)以及證書(shū)授權(quán)中心的數(shù)字簽名。數(shù)字證書(shū)還有一個(gè)重要的特征就是只在特定的時(shí)間段內(nèi)有效。簡(jiǎn)單的說(shuō):在密碼學(xué)領(lǐng)域,數(shù)字證書(shū)就是帶有數(shù)字簽名的公鑰!存儲(chǔ)格式:DER(DistinguishedEncodingRules):區(qū)分編碼規(guī)則。二進(jìn)制格式,記錄的第一個(gè)字段信息是一個(gè)
ASN.1(AbstractSyntaxNotationOne)對(duì)象。DER可用于編碼公鑰、私鑰與證書(shū)。PEM(PrivacyEnhancedMail):保密郵件的編碼標(biāo)準(zhǔn)。信息轉(zhuǎn)換為ASCII碼或其他編碼,使用BASE64對(duì)
加密后的信息進(jìn)行編碼。DER可用于編碼公鑰、私鑰與證書(shū)。存儲(chǔ)規(guī)范:X509:安卓系統(tǒng)大量使用的證書(shū)規(guī)范。目前使用v3版本。PKCS#7:.p7c格式結(jié)尾。PEM存儲(chǔ)的話,會(huì)以“-----BEGINPKCS7-----”
和“-----ENDPKCS7-----”
做頭尾標(biāo)記,存儲(chǔ)證書(shū)鏈與單個(gè)證書(shū)。PKCS#12:.pfx或.p12格式結(jié)尾。可存儲(chǔ)證書(shū)、私鑰及公鑰。數(shù)字證書(shū)X509
PEM證書(shū)->數(shù)字證書(shū)X509證書(shū)算法工具JCrypTool/CrypToolhttp://算法工具openssl/openssl/opensslecho-n"hello"|opensslaes-128-cbc-a-e-Ke0e0e0e0f1f1f1f1e0e0e0e0f1f1f1f1-ive0e0e0e0f1f1f1f1e0e0e0e0f1f1f1f1tv611lW0N+HKtQi+ysr2TQ==算法工具RECalcTool協(xié)議分析1.網(wǎng)絡(luò)抓包2.數(shù)據(jù)包分析與識(shí)別3.日志分析4.代碼分析與算法識(shí)別5.Hook輸出或動(dòng)態(tài)調(diào)試6.測(cè)試結(jié)果網(wǎng)絡(luò)抓包抓包工具:Http/Socket抓包:tcpdump:adbshelltcpdump-p-vv-s0-w/sdcard/capture.pcaptcpdump->WireSharkHttp/Https抓包:Fiddler、Burpsuite、Charles1.手機(jī)導(dǎo)入FakeCert.crt2.抓包工具配置Https代理3.手機(jī)設(shè)置代理服務(wù)器4.手機(jī)HookBreakingSSLPinning5.抓包測(cè)試網(wǎng)絡(luò)抓包Http/Https抓包配置1234數(shù)據(jù)包分析與識(shí)別通信協(xié)議Socket數(shù)據(jù)格式紅色與綠色部分:對(duì)應(yīng)的部分是固定值,猜測(cè)是協(xié)議的固定字段部分。黑色部分:應(yīng)該是通信的真正數(shù)據(jù),數(shù)據(jù)的長(zhǎng)度為16字節(jié)的整數(shù)倍,猜測(cè)是使用對(duì)稱(chēng)或非對(duì)稱(chēng)加密,而通信傳輸一般使用對(duì)稱(chēng)加密,故猜測(cè)此處使用對(duì)稱(chēng)加密,接下來(lái)需要反編譯代碼,驗(yàn)證猜測(cè),找到密鑰與算法。數(shù)據(jù)包分析與識(shí)別通信協(xié)議RESTorSOAP?數(shù)據(jù)格式JSONapplication/octet-stream??常見(jiàn)的壓縮算法常見(jiàn)壓縮算法數(shù)據(jù)頭部:gzip1F8B08zip504B(PK)rar52617221(Rar!)zlib789clzma6c00lz404224Dapplication/octet-stream??1F8B08->gzip日志分析App日志輸出自帶了日志輸出但默認(rèn)關(guān)閉默認(rèn)開(kāi)啟日志輸出日志分析過(guò)時(shí)的方法-Smali注入針對(duì)日志輸出語(yǔ)句被移除,但日志框架保留代碼分析與算法識(shí)別IDAPro+FindCrypt2Rijndael
S-boxAESInit代碼分析與算法識(shí)別AES_cbc_encryptwithPKCS5paddingPKCS5Padding有如下特點(diǎn):1.填充的字節(jié)都是一個(gè)相同的字節(jié)。2.該字節(jié)的值,就是要填充的字節(jié)的個(gè)數(shù)。如果要填充8個(gè)字節(jié),那么填充的字節(jié)的值就是0×8;要填充7個(gè)字節(jié),那么填入的值就是0×7;…如果只填充1個(gè)字節(jié),那么填入的值就是0×1;PKCS5Padding與PKCS7Padding的區(qū)別:前者只作用于塊大小為64字節(jié)的數(shù)據(jù),后者沒(méi)有此限制。代碼分析與算法識(shí)別CBC(密碼分組鏈接模式)CBC模式原理代碼分析與算法識(shí)別RSA/ECB/PKCS1Padding
PKCS1Padding填充規(guī)則代碼分析與算法識(shí)別RSA
1024自定義Padding長(zhǎng)度12,默認(rèn)11,數(shù)據(jù)長(zhǎng)117字節(jié)Hook輸出或動(dòng)態(tài)調(diào)試Hook:測(cè)試結(jié)果測(cè)試報(bào)告破解效果代碼還原App殼1.簡(jiǎn)述脫殼前學(xué)習(xí)的知識(shí)、殼的歷史、脫殼方法2.第一代殼3.第二代殼4.第三代殼5.第N代殼簡(jiǎn)述1.Apk文件結(jié)構(gòu)2.Dex文件結(jié)構(gòu)3.殼史4.殼的識(shí)別Apk文件結(jié)構(gòu)文件或目錄作用META-INF/也就是一個(gè)
manifest
,從
javajar
文件引入的描述包信息的目錄res/存放資源文件的目錄lib/如果存在的話,存放的是
ndk
編出來(lái)的
so
庫(kù)AndroidManifest.xml程序全局配置文件classes.dex最終生成的
dalvik
字節(jié)碼resources.arsc編譯后的二進(jìn)制資源文件Dex文件結(jié)構(gòu)殼史第一代殼Dex加密
1.Dex字符串加密 2.資源加密 3.對(duì)抗反編譯
4.反調(diào)試 5.自定義DexClassLoader第二代殼Dex抽取與So加固
1.對(duì)抗第一代殼常見(jiàn)的脫殼法
1.DexMethod代碼抽取到外部(通常企業(yè)版) 2.Dex動(dòng)態(tài)加載 3.So加密第三代殼Dex動(dòng)態(tài)解密與So混淆
1.DexMethod代碼動(dòng)態(tài)解密
2.So代碼膨脹混淆 3.對(duì)抗之前出現(xiàn)的所有脫殼法第四代殼armvmp(未來(lái))
1.vmp殼的識(shí)別娜迦:libchaosvmp.so,libddog.solibfdog.so愛(ài)加密:libexec.so,libexecmain.so梆梆:libsecexe.so,libsecmain.so,libDexHelper.so360:libprotectClass.so,libjiagu.so通付盾:libegis.so網(wǎng)秦:libnqshield.so百度:libbaiduprotect.so常用加固廠商特征殼的識(shí)別基于特征的識(shí)別代碼第一代殼1.內(nèi)存Dump法2.文件監(jiān)視法3.Hook法4.定制系統(tǒng)5.動(dòng)態(tài)調(diào)試法內(nèi)存Dump法內(nèi)存中尋找dex.035或者dex.036/proc/xxx/maps中查找后,手動(dòng)Dump內(nèi)存Dump法內(nèi)存中尋找dex.035或者dex.036android-unpacker/strazzere/android-unpacker內(nèi)存Dump法內(nèi)存中尋找dex.035或者dex.036drizzleDumper
/DrizzleRisk/drizzleDumper升級(jí)版的android-unpacker,read和lseek64代替pread,匹配dex代替匹配odex內(nèi)存Dump法IDAPro+dumpDEXdumpDex/CvvT/dumpDex文件監(jiān)視法Dex優(yōu)化生成odexinotifywait-for-Android/mkttanabe/inotifywait-for-Android監(jiān)視文件變化文件監(jiān)視法Dex優(yōu)化生成odexinotifywait-for-Android/mkttanabe/inotifywait-for-Android監(jiān)視DexOpt輸出Hook法HookdvmDexFileOpenPartial/4.4_r1/xref/dalvik/vm/DvmDex.cppHook法HookdvmDexFileOpenPartial定制系統(tǒng)修改安卓源碼并刷機(jī)定制系統(tǒng)DumpApk/CvvT/DumpApk只針對(duì)部分殼動(dòng)態(tài)調(diào)試法IDAPro動(dòng)態(tài)調(diào)試法gdbgcore法.gdbserver:1234–attachpid.gdb(gdb)targetremote:1234(gdb)gcorecoredump文件中搜索“dex.035”第二代殼1.內(nèi)存重組法2.Hook法3.動(dòng)態(tài)調(diào)試4.定制系統(tǒng)5.靜態(tài)脫殼機(jī)內(nèi)存重組法Dex篇ZjDroid/showthread.php?t=190494內(nèi)存重組法Dex篇ZjDroid/showthread.php?t=190494對(duì)付一切內(nèi)存中完整的dex,包括殼與動(dòng)態(tài)加載的jar內(nèi)存重組法so篇elfrebuild內(nèi)存重組法so篇elfrebuild構(gòu)造soinfo,然后對(duì)其進(jìn)行重建Hook法針對(duì)無(wú)代碼抽取且HookdvmDexFileOpenPartial失敗
HookdexFileParse/4.4_r1/xref/dalvik/vm/DvmDex.cppHook法針對(duì)無(wú)代碼抽取且HookdvmDexFileOpenPartial失敗
HookdexFileParse/WooyunDota/DumpDexHook法針對(duì)無(wú)代碼抽取且HookdexFileParse失敗Hookmemcmp/4.4_r1/xref/dalvik/vm/DvmDex.cppHook法針對(duì)無(wú)代碼抽取且HookdexFileParse失敗Hookmemcmp定制系統(tǒng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于土地流轉(zhuǎn)協(xié)議
- 顱縫早閉病因介紹
- 醫(yī)患爭(zhēng)議調(diào)解協(xié)議書(shū)
- 2025就業(yè)協(xié)議樣本
- 河南省許昌市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版質(zhì)量測(cè)試(下學(xué)期)試卷及答案
- 《電機(jī)技術(shù)應(yīng)用》課件 3.1.2 直流電機(jī)電樞繞組
- (可研報(bào)告)天津東疆保稅區(qū)設(shè)立spv公司可行性報(bào)告
- (2024)紙塑復(fù)合袋生產(chǎn)建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- (2024)觀光餐廳建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 2023年天津市濱海新區(qū)八所重點(diǎn)學(xué)校高考語(yǔ)文聯(lián)考試卷
- 廣東省惠州市惠陽(yáng)區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題
- 課件:《中華民族共同體概論》第十五講:新時(shí)代與中華民族共同體建設(shè)
- 幼兒園冬至主題班會(huì)課件
- 畜禽解剖生理第八章生殖系統(tǒng)資料教學(xué)課件
- 2024年嬰幼兒發(fā)展引導(dǎo)員(初級(jí))職業(yè)技能鑒定考試題庫(kù)(含答案)
- 小學(xué)數(shù)學(xué)每日100道口算題(每頁(yè)100題)
- 幼兒園小班主題《我會(huì)排隊(duì)》微課件
- 2024至2030年中國(guó)魔方行業(yè)市場(chǎng)前景調(diào)查及投融資戰(zhàn)略研究報(bào)告
- 園林工程智慧樹(shù)知到答案2024年浙江農(nóng)林大學(xué)
- 游泳社會(huì)指導(dǎo)專(zhuān)項(xiàng)理論知識(shí)題庫(kù)及參考答案
- 2025屆高考語(yǔ)文一輪總復(fù)習(xí):120個(gè)文言實(shí)詞
評(píng)論
0/150
提交評(píng)論