双世宠妃双宠世妃电视剧百度云。

Error_404_资源不存在
404. 抱歉! 您访问的资源不存在!
请确认您输入的网址是否正确,如果问题持续存在,请发邮件至contact&#与我们联系。6132人阅读
Android安全(78)
作者:Jack_Jia &&&邮箱:&
英文原版下载地址:
一、Android DEX 动态加载技术
& & & 在Android开发过程中,开发者可以使用DexClassLoader动态加载另一个DEX文件。
& & & API接口:
& & & & &DexClassLoader(String dexPath, String&optimizedDirectory, String libraryPath,ClassLoader parent)
& & & 缺点:需要DEX以文件形式明文存放在存储设备上。
& & &Android4.0版本增加了对内存中DEX数据的动态加载,这样就克服了使用DexClassLoader时DEX以文件形式明文存放在存储设备上的缺点,内存中DEX数据可以来源于解密后的文件或者网络。这样就增加了DEX数据的安全性。但是DexClassLoader并没有暴露该种加载方式。开发者需要在JAVA层实现自己的Dex ClassLoader。
& & Android相关源代码位置:
& &JAVA层源代码:libcore\dalvik\src\main\java\dalvik\system\DexFile.java
& & &* Open a DEX file based on a {@code byte[]}. The value returned
& & &* is a magic VM cookie. On failure, a RuntimeException is thrown.
& &&nativeprivatestaticint openDexFile(byte[] fileContents);
& &开发者可以通过反射调用DexFile实现自己的Dex ClassLoader,但是这种方式DEX数据在JAVA层,比较容易获取,安全度比较低。
& &开发者可以通过JNI调用底层函数解析:
& &C++层源代码:dalvik2\vm\native\dalvik_system_DexFile.cpp
& & const DalvikNativeMethod dvm_dalvik_system_DexFile[] = {
& & & & & & & { &openDexFile&, &(Ljava/lang/SLjava/lang/SI)I&,Dalvik_dalvik_system_DexFile_openDexFile },
& & & & & & &&{ &openDexFile&, &([B)I&,Dalvik_dalvik_system_DexFile_openDexFile_bytearray },
& & & & & & & { &closeDexFile&, &(I)V&,Dalvik_dalvik_system_DexFile_closeDexFile },
& & & & & & &&{ &defineClass&, &(Ljava/lang/SLjava/lang/ClassLI)Ljava/lang/C&,Dalvik_dalvik_system_DexFile_defineClass },
& & & & & & & { &getClassNameList&, &(I)[Ljava/lang/S&,Dalvik_dalvik_system_DexFile_getClassNameList },
& & & & & & & { &isDexOptNeeded&, &(Ljava/lang/S)Z&,Dalvik_dalvik_system_DexFile_isDexOptNeeded },
& & & & & & & { NULL, NULL, NULL },
& &第一步首先获取Dalvik_dalvik_system_DexFile_openDexFile_bytearray方法指针:
& &JNINativeMethod *dvm_dalvik_system_DexF
& &void (*openDexFile)(const u4* args, JValue* pResult);
& &JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
& & & &void *ldvm = (void*)dlopen(&libdvm.so&, RTLD_LAZY);
& & & &dvm_dalvik_system_DexFile = (JNINativeMethod*)dlsym(ldvm, &dvm_dalvik_system_DexFile&);
& & & &lookup(dvm_dalvik_system_DexFile, &dvm_dalvik_system_DexFile&, &([B)I&, &openDexFile)
& &int lookup (JNINativeMethod *table, const char *name, const char *sig, void (**fnPtrout)(u4 const *, union JValue *)) {
& & & & int i = 0;
& & & & while (table[i].name != NULL) {
& & & & & &if ( (strcmp(name, table[i].name) == 0) && (strcmp(sig, table[i].signature) == 0) ) {
& & & & & & & & &*fnPtrout = table[i].fnP
& & & & & & & & &return 1;
& & & & & & }
& & & & & & i++;
& & & &return 0;
& &第二步调用Dalvik_dalvik_system_DexFile_openDexFile_bytearray方法解析Dex数据
& & &ArrayObject * // header+dex content
& & &u4 args[] = { (u4)ao };
& & &JValue pR
& & openDexFile(args, &pResult);
& & result = (jint)pResult.l;
& &第三步实现JAVA层Dex ClassLoader完成类的加载:
& & & int cookie = openDexFile(...);
& & & Class&?& cls =
& & & String as[] = getClassNameList(cookie);
& & & for(int z=0; z&as. z++) {
& & & & & &if(as[z].equals(&com.immunapp.hes2013.MainActivity&)) {
& & & & & & & & cls=defineClass(as[z].replace('.', '/'), context.getClassLoader(), cookie );
& & & } else {
& & & & & & & &defineClass(as[z].replace('.', '/'), context.getClassLoader(), cookie );
& 缺点:只能使用在Android4.0以上设备
二、自篡改Davlik字节码(原理:)
& &1、搜索内存查找DEX特征(dex\n035)
& & & & 读取\proc\self\maps文件获取dex map地址
& & & & 它将以_SC_PAGESIZE内存页对齐, 相对Map开始地址偏移0x28
& &2、DEX格式解析()
& &3、找到代码正确的位置
& & & & 第一步定位到具体类,第二步定位到具体方法,获取方法字节码相对data section偏移量。
& &4、解锁内存
& & & & mprotect((unsigned char*)aligned,PROT_WRITE | PROT_READ, len);
& 5、修改相应的代码
& & & & memcpy((unsigned char*)code_off,opcodes, len);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:743323次
积分:7869
积分:7869
排名:第2065名
原创:230篇
转载:116篇
评论:152条
(5)(1)(1)(2)(3)(4)(14)(7)(43)(21)(41)(4)(7)(5)(4)(13)(28)(2)(3)(4)(3)(3)(6)(4)(36)(27)(13)(2)(12)(16)(16)Android逆向系列之脱壳篇–Dump Dex - 推酷
Android逆向系列之脱壳篇–Dump Dex
一、环境准备
alictf-apk-300、IDA、DDMS、模拟器(或真机)、其他必备环境,如有问题请移步前面的工具篇等文章
二、原理简介
dvmDexFileOpenPartial函数是执行dex文件,因此会有真正地关于dex文件的一些主要的信息
int dvmDexFileOpenPartial(const void* addr, int len, DvmDex** ppDvmDex);
第一个参数就是dex内存起始地址,第二个参数就是dex大小。所以在这个函数下断点可以直接dump出明文dex.
三、Dump dex步骤
调试步骤可参考JNI_Onload《动态调试so文件》一文,这里仅说明简单步骤
1、adb remount
2、adb push android_server /system/bin
3、adb chmod 777 android_server
4、adb forward tcp:23946 tcp:23946
5、adb shell am start -D -n 包名/类名
6、开启IDA
7、选择debugger–&attach–&remote armlinux/android debugger–&localhost–&选择对应进程
8、debugger–&debugge options–&勾选在lib load挂起两个选项
9、寻找dvmDexFileOpenPartial函数并下断点
IDA中找到module窗口,ctrl+f输入libdvm.so,然后双击该模块,ctrl+f输入dvmDexFileOpenPartial,右键,点击add breakpoint
adb pull /system/lib/libdvm.so —&IDA打开找到dvmDexFileOpenPartial函数偏移
ctrl+s打开,找到libdvm.so基地址;计算出绝对地址=基地址+偏移地址
按g输入绝对地址跳转到相应位置,按F2下断点
10、打开DDMS,勾选相应进程
11.jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
12.F9运行,第一次断在linker、再运行一次,则断在dvmDexFileOpenPartial函数处,如下图:
13、查看寄存器的值
14,File–&script command–&输入代码(如下图)–&run–&Dump 成功
四、反编译dex文件
方法多样,这里使用baksmali
//1707.html
http://drops.wooyun.org/tips/6840
本文属于原创,转载请注明出处 如有问题请联系管理员
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致【求助】内存防dump - 看雪安全论坛
注册日期: May 2016
现金: 3 Kx
获感谢文章数:0获会员感谢数:0
, 15:42:03
【求助】内存防dump
1、内存防dump的方法一般有什么。
2、一个思路是对dex文件中的code区域加密,当对应的函数执行的时候再对code进行解密。这样可以防止dex在内存中以连续地址存放。当加载code对应类的时候,需要对code的格式进行校验,因此在加载类的时候就需要解密code,问下应该hook哪个函数进行code的解密。
3、还有一个思路是将DexCode与Dex分离,然后重新计算DexCode与Dex起始地址的偏移,将新的DexCode的偏移更新到codeOff字段。
Struct&DexMethod{
&&&&u4&methodI
&&&&u4&accessF
&&&&u4&codeO
这里codeOff实际上是uleb128类型的,长度为1到5字节不等。新codeOff的值可能与原有的codeOff的位数不一样,也没法对该值进行正确的覆盖。
或者有没有更好的内存防dump的方法。求助大神。
注册日期: Sep 2012
现金: 10 Kx
获感谢文章数:0获会员感谢数:0
, 00:14:41
不知道你说的是不是pc端,反正pc端无解
注册日期: Feb 2013
现金: 41 Kx
获感谢文章数:1获会员感谢数:1
, 13:33:28
说一个思路吧,用prctl来保护普通的用户空间的dump。至于DEX&CODE,你不重写解释器或做VMP,还是分分钟DUMP的。执行时解密也没用,可以枚举类来初始化的。
注册日期: May 2016
现金: 3 Kx
获感谢文章数:0获会员感谢数:0
, 16:22:26
最初由 萌克力发布
不知道你说的是不是pc端,反正pc端无解...
就是普通的手机端安卓APK防内存dump方面的,有没有比较好的隐藏code的方法。谢谢。
注册日期: Jan 2015
现金: 3 Kx
致谢数: 12
获感谢文章数:1获会员感谢数:1
, 20:48:24
最初由 yaojunhap发布
说一个思路吧,用prctl来保护普通的用户空间的dump。至于DEX&CODE,你不重写解释器或做VMP,还是分分钟DUMP的。执行时解密也没用,可以枚举类来初始化的。
重写解释器?这个解释器可以参考DVM来写吗?另外android的VMP壳性能啊兼容性啊会不会不太行呢。。。小女子表示不懂大神快回我
注册日期: Sep 2006
现金: 303 Kx
致谢数: 14
获感谢文章数:0获会员感谢数:0
, 20:49:47
最初由 bbxt发布
重写解释器?这个解释器可以参考DVM来写吗?另外android的VMP壳性能啊兼容性啊会不会不太行呢。。。小女子表示不懂大神快回我
我是来回最后一句的。
注册日期: Aug 2010
现金: 25 Kx
获感谢文章数:0获会员感谢数:0
, 06:08:47
inotify监控maps和mem,dd?好像也没什么好办法。
注册日期: Feb 2013
现金: 41 Kx
获感谢文章数:1获会员感谢数:1
, 14:25:13
最初由 bbxt发布
重写解释器?这个解释器可以参考DVM来写吗?另外android的VMP壳性能啊兼容性啊会不会不太行呢。。。小女子表示不懂大神快回我
目前主流加固:
1)执行前恢复
3)无法通过Offset+size来Dump
你如果要脱壳,就重组DEX,因为内存中没有完整的解密后DEX存在。
如果要加固,就自己逆向一下梆梆的SO,看雪上也有分析。
纯黑盒加固无法将保护流程和业务代码密切关联,目前强度都不高。
您不可以发表主题
您不可以回复帖子
您不可以上传附件
您不可以编辑自己的帖子
论坛论坛启用
用户控制面板
会员在线状态
『求助问答』
『经典问答』
『资料导航』
『Android安全』
『iOS安全』
『软件逆向』
『编程技术』
『加壳脱壳』
『密码算法』
『资源下载』
『WEB安全』
『二进制漏洞』
『看雪众测』
『CrackMe』
『招聘专区』
『职业生涯』
『15PB培训』
『麦洛克菲培训』
『外文翻译』
『茶余饭后』
『安全资讯』
『论坛活动』
6)PEDIY Crackme竞赛2009
7)看雪十周年专版
8)腾讯公司2010软件安全竞赛
9)2011 Exploit Me竞赛
『图书项目版』
《加密与解密(第三版)》
《C++反汇编与逆向分析技术揭秘》
《Android软件安全与逆向分析》
『论坛版务』
所有时间均为北京时间, 现在的时间是 .
&&& 看雪学院()
| 提供带宽资源
|&微信公众帐号:}

我要回帖

更多关于 双世宠妃 全集 百度云 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信