android安全与逆向分析进阶_第1页
android安全与逆向分析进阶_第2页
android安全与逆向分析进阶_第3页
android安全与逆向分析进阶_第4页
android安全与逆向分析进阶_第5页
已阅读5页,还剩17页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android 替 MD消息 SHA安全散列算法MAC消息认证算法CRC循环冗余校验算法加密密钥 密 同步性无错误传递性主动 自同步性错误传递有限性 性明文统计扩散性分组(htt ECBCBC密文模式CFB密文反馈模式OFBCTR计数器模式DESede/3DES/TripleDES DH密钥交换算法RSA数字签名ElGameal数据加密/ DSS数据签名标准=>DSA数字签名ECC椭圆曲线加密算法 ECC+DSA==>ECDSA 构建CA根 协议与安全协议(分析协议关键是先抓包, 客户端和服务器连接:实质都是连接服务器的IPPOSTIPHTTPShttps是基于sll/tls的httpssl协议 接字tls小米2.、iddler只能抓HTTP/HTTPS,如果是socketadb tcpdump-pvvs0w/sdcard/capture.pcapctrl+cadbpullsdcard/capture.pcap 1so2so3so so会帮助我们很快解决利用重写看似麻烦的问题,一般 so加进自己项目,有两种典型需求,第一个就是拥有别人原工程,甚至只有1个so,意图利用这个so的部分函数帮助我们完成某个目dexu1/uint8_t1u2/uint16_t2u4/uint32_t4u8/unit64_t8sleb128=>有符号leb128,可变长度为1-5字节uleb128=>无符号符号leb128,可变长度为1-5字节uleb128p1leb12811-5dexstructDexFileDexProtoId//对DexType}DEX与静态类似,只是变为xxxItemClassObject结构由六个部分组成:PDvmDex://DEX文件字段iFields://对应DexClassData结构中的instanceFields实例字段directMethodsDexClassDatadirectMethodsDexClassDef:class_def_itemDexClassData:class_data_itemDexFiled(staticFields):sfiledsDexFiled(instanceFields):ifiledsDexCode:code_itemlinuxelfwindowspeAndroidELF因为Android操作系统内核采用Linux内核框架实现。ELFHeader-->ELFSegmentHeaderTable-->ELF.symtab符号表.strtab字符串表SectionHeaderTable-->ELF-h:解析ELF-l-Sarscxmlxml以arsc为例:在0x h的文件偏移地址之前进行修改,如改头部第一个HEX操作数为00。搜索字符,'1c'搜索3下。把1c前面的01改00,就可以了。看020行,头部字节流,把尾部的00改为和头部一样。思考:arsc、xml文件很难去做单纯的动态加载,如DEX,这也是文件根本性质决定的,还有一个原因,就是安装后这个APK必须要打开。我们最多能做到的,在动态上(自然这 、十六进制加密要强些),就是用壳的apk,然后结合APK动态加载,让真实APK的资源文件是正确的,可以考虑动态代码生成(如动态生成真实APK的配置xml,而在asset文件夹下的APK压缩包中并没有配置 分两种,你是保护xml\arsc文件,还是那些png等外部资源,当然原理一样,文件的加 )等。事实是,DEX和APK的动态加载往往必须要考虑资源怎么办的问题,解决 DEXstaticconstchar*Dex_OPT_BIN=\dexopt\Optmain.cpp:extractAndProcessZip()// 和抽出dex,加上odex文件头,设置优化选项,可以看作DEX文件优化的主控函数 ysis\DexPrepare.cpp:dvmContinueOptimization()//写入odex件,可以说优化与验证工作的完成就是写入odex文件DEX文件解析的主控函数dex对应odex文件\vm\DvmDex.cpp:dvmDexFileOpenFromFdDEX\libdex\DexFile.cpp:dexFileParse()//解析dexfileopenpartialdex此可知,其实dalvik很喜欢走的路就是用odex,而不是dex。dex文件只有在odex文件不好用时才去用,这与oat文件一致。DEXDalvik_dalvik_system_DexFile_defineClassNative\vm\oo\Class.cpp:loadClassFromDexClassObject往后便是FindClass、GetStaticMthodID、CallStaticMthod、 过程\dalvik\vm\Native.cpp:JNI静 过程begin.S:begin.S:find_librarysoCallConstructorssoinitinitarray先看CallConstructors函数,从后面的执行来看CallFunction("DT_INIT",init_func);CallArray("DT_INIT_ARRAYinit_arrayinit_array_countfalse);find_librarysoload_librarysosoelf_reader.LoadReadElfHeader()&&VerifyElfHeader()&&ReadProgramHeader()&&ReserveAddressSpace()&&LoadSegments()&&so的装载是一种解析式装载,这与dex,dex优化验证生成odex,再去解析odexso过程中主要解析是load段。分配soinfo_alloc函数,生成了一个soinfo:soinfo_link_image函数,也就是soinfo结构 的镜像文件。so中用于动态 的结构就是.dynamic节,即动态节区。b.cso主要函数为soinfo_relocate,soinfo_link_image解析重定位项:.rel=>重定位表导入符号信息:.dynsym=>1、dumpDEX2、内存动态替换DEX3、DEX4、DEX1、在.init和.init_array下断,若.init_array节存在dex ,则dump2、dumpsoso脱壳,一般选择在jni_onload3、因为在initinit_array运行之后,如果有jni_onload4、HOOKdlopen等函数,判断是否加载了so,如果加载就 个so的装载、 过程中可以对so进行变形后的修复,so 5、自定义linkerDEXELF1、app代码修改 植入、替 加入代码(木马、隐私、)动态注入(数据、窃取、修改)协议修改(服务器 防止协议直 刷--加密协议通 、阿里、腾讯针对apk中的classes.dex过native代码来对其运行时对原dex文件整体压缩加密,保存在壳 的dex文件尾部,加 将classes.dex文件中的方法代码进行提取,抽取方法,在运行 libddog.solibfdog.so 第一代加固DEXproguard等 DEX静态DEX文件整体加密自定义DexClassLoaderDEX抽取与SODEX动态加载(分为利用jni和自定义jni即自定义底层函数)DEX代码抽取到外部(类抽取加密按需 SO加密DEX动 及代码动 内存Dump内存中寻找dex.035或者/proc/$pidmaps中查找后,手动DumpHook法HookDexHookHookHookdexFileParseHookmmapHookdexFileParse优化时,SO自定义linker脱SO壳ARTdex2oat生成oat文件时,内存中的DEX阶段发展(换个角度,要 后dex文件的状态来看静态:dex文件 (如某一个文件夹下的odex文件)动态:dex文件 整体加密:真实、完整的dex抽取加密:真实、完整的dex对于整体加密和抽取加密,从实现来看,整体加密就是把dex整体隐藏在so中,而抽取加密就是先从so里 出一个待修复的dex文件,真正的dex从为什么dex1、dex(如修改DexHeader2、dex修复dex/odex文件本身(如只修复DexMethod结构体)3、dex文件的一些方法不是事先 加固的onCreate方法)4、dex载或运行时,被HOOK修复成正确的,后再删掉或继续用错误部分填dexdexdex1、打开dex存在dexnative函数defineclassnativefindnoinit(包括了dvmLookupClass)loadClassFromDEX函数分析loadClassFromDEX0dvmLinkClass函数分析loadMethodFromDEX函数分析3、类的初始化时:dvmIsClassInitializeddvmInitClass4、查找类5、获得方法ID(其实在GetStaticMethodIDDEX自解析重构技术:DexHunter介绍DexHunterDexHunter源码详细分析如果你想脱壳一个APP,在运行APP之前,你需要把“dexname”这个文件推入到的“/data/”文件夹下。在"dexname"的第一行是特征字符串(参照"slide.pptx").第二行是目标APP所在的数据路径(例如,.example.seventyfour.tencenttest/)。dexname是linux/Unix的风格形式,如果在windows下输入,则需要用winhex修改换行符的十六进制。你可以使用"logcat"命令获得log日志来判断壳是否已经 /data/app/XXX-1.apk(/data/app/XXX-2.apk) /data/data/XXX/cache/.注意,他本身的系统img是4.4.3,如果想做到版本通用,只需要单单替换system.imgimg它是用DEXHEADER结构的header.stasticsize等来获取静态字段数clazz量用clazz结构中的内容。 试想当classdef都是不完整情况下,得到的data数据区肯定也是缺失的,因为data数据是代码的真实数据区。DEXHUNTER采用直接dumpdata区明显是不行的,我们先把oncreate001中指令骗出来,再去dumpdata,接着重构。DEXHUNTERdump,DexClassDefItem结构中的anonotionoff ddif=/dev/zeroof=/data/local/tmp/info.txtbs=1if代表输入文件。如果不指定if,默认就会从stdin中 输入,/dev/zero是一个字符设备,会不断返回0值字节(\0)。of代表输出文件。如果不指定of,默认就会将stdoutbscount代表 的块数cat/proc/6594/mapsdex0x20,odex0x32ddif=/proc/6594/memof=/data/local/tmp/dump.dexskip=8bs=1count= lib/armeabi-v7a/libDexHelper-x86.so梆梆是把原dex文件加密放到了secData0.jar,所以直接拿到dex文件,修复 jar就是原dex。secData0.jar文件保存在.cache的classes.dex是加密的,主要是通过hook 脱掉360的壳:360360xposed360so手动dumpmmap360:drizzledumperdex2oat assets/baiduprotect1.jar或者assets/baiduprotect.jar采用动态加载assets下的baiduprotect.jar。然后采用重写onCreate,用onCreate001代替,onCreate内容为修复onCreate001代码、执行onCreate001代码、清楚onCreate001HookDexParse来获取Dex相关数据,然后遍历ClassDef Dump出修复好的Dex然而Dump的Dex还要修复(可以根据ClassDef自动修改) xdex脱壳机与骗出jni_onload的oncreatevm apktool助手伪加固特征:监测application360appkey、application假梆梆加固:application进程沙 机使得Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持。应用程序及其运行的Dalvik虚拟机运行在独立的Linux进程空间,与其它应用程序完全 APK任关系。在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能相同,否则,会被当做一个新的应用程序。Android权限程序行使权限的认证方式也不一样,NormalDangerous时由用户确认,Signature和Signatureorsystem级则必须是系统用户才可用。 进程间通信机制 LinuxLMK,将进程重要性分级、分组,当内存不足时,自动清理级别进程所占用的内存空间。同时,引入的Ashmem内存机制,使得Android具备清理不再使用共享内存区域的能力。jarsigner.exeverifyAPK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论