添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
if (!Debug.isDebuggerConnected()) { String v0 = Build.CPU_ABI; if (v0 != null && (v0.startsWith( "x86" ))) { StubApplication.loadX86Library(); return ; System.loadLibrary( "baiduprotect" );

把第一个if删掉之后,程序顺利的加载了baiduprotect.so,顺利的进入了壳的领空,不过不知道是程序在so里面做了完整性校验还是再次检测了debuggerconnected,每次跑都是进入了一个死循环后,然后程序就跑挂了,跑了很多次都是难以逃出那个trap。这个时候就比较纠结了。既然反调试过不去,想起360的壳子用DD也可以脱的很完美,那就换个方式试试。

0x3 DD大法

dd if=/proc/PID/mem of=XX skip=0 ibs=1 count=LENGTH 
skip改成偏移地址
cat /proc/pid/maps

1.这里首先要感谢下wbyang博士猛男,这个DD大法也是上次挑战赛之后向他学来的。程序跑起来,把内存都dump出来,大概是100多mb的东西。找几个字符串,然后向上翻,找到dex文件的头,发现是被抹掉的。如图:
前面红色框的8字节是odex的magic头。后面的0x70字节是dex的头。除了一些size和编码标志没有被抹掉,其他的已经是面目全非,修复后如下:
这下把dex文件抠出来了。
2.把dex反编译成smali文件
出现如下错误:

反复检查后发现了如下是CodeItems下面的offset错误:
Dex的文件大小才0xA30DC,而offset指向了外面的东西。当然是无法解析的,这里我是有一个问题的,第三个偏移,这个0x0220E8E8,指向的是前面的内存,这是如何做到的?我个人认为是百度是在加载完成之后故意改成这个数字的。若有错误,还望前辈不吝指正。
把这三个offset 都改成0就可以达到反编译成功,当然是在缺三个DataItem的前提下编译成功的。找到被抹掉的DataItem地址:

以上三处为0的区域就是加固前的dex代码所存放的位置。
因此,假设我们能从dex的结构逆推出该三处的数据并且用应该的数据填充这块,静态就能把这个壳子搞定了。
3.如何修复

360壳子要修复的数据为DataclassDef中的offset即可。而百度的更为麻烦一些,不仅它的偏移需要修复一下,更为麻烦的是DataItem的数据也要修复。这个难度就更大了。
总的修复原则是导出函数表,然后按顺序来修复dex中被抹掉的数据,如下:

逆计算出函数的uleb128的索引值、常见函数的一些accessflags、以及指向函数内容的offset。
修复后如下:

修复的过程比较繁琐,有时候还需要自己尝试几次才知道size是多少。所以叫它人肉修复好了。
修复好了反编译如图

发现onCreate函数没有代码,检查了一下,又有新发现!

原来是oncreate中的insns[]也被抹掉了。这个算是最基本的单位了,功力太弱,无法逆推。

最后总结下,百度的壳子需要修复dex头中的magic、签名值、校验值以及各个offset。还需要修复Dataclassoffset,以及Dataclass和opcodes。前两者是可以静态修复的,最后的只能动态调试寻找了。百度壳子新增了一个oncreate001的函数,调用的壳中的d方法以及e方法,猜测是d方法填充了insns[]解密数据,然后e方法为清洁工,抹去正确的数据或者是改成一些非法数据。此时就泪奔了。。(心里暗想:百度好猥琐啊。。。)

由于过去几天了,再次写文章又重新做了一遍,把各种东西找好,写完花了将近三个小时,累觉不爱了。。。T T

由于水平有限,难免有错误,还望各位看官不吝指正。
2015.3.24 By Ericky

本文博客地址:http://blog.csdn.net/qq1084283172/article/details/782375711.调用Debug.isDebuggerConnected函数这种反调... 来自: Fly20141201. 的专栏 市场上的360脱壳神器drizzleDumper大家好最近360壳不太友好,老是出现在各种东西里所以我从github上找到了一个还行的工具drizzleDumper首先这个工具是在虚拟机上用的不会配置... 来自: yxp1198287349的博客 转:一、情景分析程序猿一般都很孤独,特别是总是和代码相伴,比如像我这种穷屌丝,一到周末就闲着没事刷各种应用,看看想看的,无意中发现一款封面看着挺诱人的约友神器,下来来看看,迫不及待的点开:我尼玛我只是... 来自: zhangmiaoping23的专栏 http://blog.csdn.net/u011458979/article/details/48025673[置顶]使用百度加固服务给app应用加固标签:android百度加固jdk签名2015-... 前面讲了如何寻找OEP和脱壳,有的时候,Dump出来的时候不能正常运行,是因为还有一个输入表没有进行处理,一些加密壳会在IAT加密上面大做文章,用HOOK - API的外壳地址来代替真是的IAT的地址... 来自: kaibing的专栏 最近一直在研究百度壳,发现网上这方面的资料非常少。所以我把自己做的发出来跟大家分享,共同学习进步。下面开始:一、init_array 我们发现init_array中存在多个函数地址,JNI_Onloa... 来自: 六桥风月IT随笔 目录简述(脱壳前学习的知识、壳的历史、脱壳方法)第一代壳第二代壳第三代壳第N代壳简述Apk文件结构Dex文件结构壳史壳的识别Apk文件结构Dex文件结构壳史第一代壳Dex加密Dex字符串加密资源加密对... 来自: mergerly的专栏 作为敢抢奥运会头条的男人,宋喆遭遇了围追堵截。这次全民捉奸不仅是娱乐圈的狂欢,科技圈也神乱入了一下:如果没有广大黑客技术爱好者的参与,狗仔们似乎也无法在几天之内扒出宋喆的身世、爱好、住址、开房记录,用... 来自: If you can take it, you can make it. 实际上,这里所说的人肉搜索引擎就是指更多的利用人工参与来提纯搜索引擎提供的信息的一种机制。猫扑的人肉搜索引擎就是其中一个比较成功的例子。后面我们会根据猫扑的人肉搜索引擎给出一个更加具体的描述。针对搜索... 来自: Legion.Tao(http://t.sina.com.cn/dastantao) 相信有的人一看到这个标题就想到两者之间的关系了。没错,人肉搜索说明我们正在靠近网络实名制。人肉搜索威力之巨大不用多说,它让我们认识到,一个人越是依赖网络,他就会在网络上留下越多的活动记录,找到他的真实... 来自: remember1989的专栏 经过百度加固的有下面特征可以看见百度调用了系统函数   我们可以直接修改smali然后反编译回去,但是百度在so有检测签名,我们利用修改android内核的办法让百度无法检测,如下修改完整的内核然后编... 来自: KingDigGrave的博客 转:http://bbs.pediy.com/showthread.php?p=1427471#post1427471在百度的加固中会使用这句话来判断本程序是否被调试if (!Debug.isDebu... 来自: zhangmiaoping23的专栏 先上一段百度加固的上线公告:尊敬的开发者:为防止您的在百度开发者平台提交的移动应用利益受损,现百度开发者平台为您提供移动应用加固服务,使用加固服务,能有效防止应用被反编译、篡改,保护开发者知识产权。但... 来自: 海的那边的专栏 20181129加入今天发现一个hens很神奇事情,我这篇文章当时是最早详细说明,制作映射表然后用映射表修复的文章,然后有一些csdn的博主就拿很久以前比如2017年年初的文章编辑,然后把我写的指令映... 来自: KingDigGrave的博客 http://www.apkbus.com/android-139096-1-1.html之前发过一个帖子,是说5种常用的APK保护技术的,详细可参阅:http://www.apkbus.com/an... 来自: 灵思致远Leansmall的博客 一、情景分析程序猿一般都很孤独,特别是总是和代码相伴,比如像我这种穷屌丝,一到周末就闲着没事刷各种应用,看看想看的,无意中发现一款封面看着挺诱人的约友神器,下来来看看,迫不及待的点开:我尼玛我只是想视... 来自: fengyeNom1的博客 http://blog.csdn.net/qq_21051503/article/details/51322505Android相比iOS,安全问题往往比较突出,各种漏洞和破解层出不穷。对破解方法的了... 来自: Mingz技术博客 这篇博客就记一下自己脱360加固2,3代的过程吧。毕竟作为一个android逆向入门小菜完全靠自己脱壳是不大现实,事实上也是借鉴了不少大佬们的博客,当然碰到了可遇而不可求的一代壳的话那是当然要垂死挣扎... 来自: 葱花炒蛋的博客 一、前言声明:本次破解是基于XposedInstaller框架,具体使用方法请上网查询。假设你已经安装好框架,按照下面的步骤,实现乐加固加固脱壳修复DEX,并且重打包运行。本次选择脱壳的APP是小猿搜... 来自: 没有功夫的熊猫2 的博客 常规操作:1、寻找OEP:OD载入,找到OEP,停在OEP处(一般在pushebp代码处)。2、生成转存文件:打开LordPE,选中程序的进程,右键“修正镜像大小”,然后右键“完整转存”,输入文件名,... 来自: 踏实做事,诚信做人 二代加固的难度有所增加,最明显的地方就是qihoo下面增加了一个Configuration.smali文件。由以前的一个增加为两个。脱壳时有几个关键的so:1.libc.so(主要是提供一些系统函数,... 来自: 雪一梦的博客 标题:DLL文件脱壳(重定位表修复部分)作者:kanxue时间:2008-03-1610:42链接:http://bbs.pediy.com/showthread.php?t=61334 13.5 D... 来自: yizhenweifeng的专栏 先来一张图对比下:加固前和脱壳后dex文件比对:对比结果发现:将原有的dex文件头抹除,保留其它区段。将一个新的将“壳”的dex文件放到抹除文件头部分,在修复dex文件校检相关参数。(没仔细研究这个壳... 来自: 小5 12306使用提梆梆企业VIP版本的加固,跟其它梆梆加固一样,都会用到libsecexe.so来做dex的加载,本文对此so做一个脱壳的分析(一)、so脱壳此so的最先执行点在init_procini... 来自: 燕十二的BLOG http://hi.baidu.com/ximo2006/blog/item/ff0d3211f139f7def6039e75.html用来纠正下《也来谈谈VMP2.05的脱壳》中,那个修复DLL的一... 来自: 记录点滴 前言压缩壳(大部分)和加密壳脱壳后,在OEP处Dump出来后,都需要IAT修复.否则运行报错.今天练习了脱壳后的IAT修复,将流程点记录一下.记录OEP处dump的工具OllyDump(修复导入表du... 来自: talk is cheap;Later equals never; 如何使用百度加固服务首先必须有在百度上线的app申请应用加固服务按照提示下载有关帮助文档及工具下载通过加固服务还没有进行签名的apk使用下载的签名工具对下载的apk签名并生成渠道包最后对个渠道apk进... 来自: marke'wang的博客 测试程序链接:http://pan.baidu.com/s/1cMGmF8密码:8xgn脱壳环境:Android4.2、dalvik模式、root…使用到的工具:IDA6.8AndroidDevice... 来自: coc_k的博客 废话不说。测试样本md5:67257EA2E9EC6B35C9E5245927980EEA脱壳前样本:0x01,首先使用ps指令查看进程0x02,通过应用的进程号查看地址分布0x03,前面的两个字段表... 来自: 大郎的博客 如果你爱他,把他放到人肉引擎上去,你很快就会知道他的一切;如果你恨他,把他放到人肉引擎上去,因为那里是地狱…人肉搜索引擎其实就是在一个社区里面提出一个问题,由人工参与解答而非搜索引擎通过机器自动算法... 来自: zb0567的专栏 如果你爱他,把他放到人肉引擎上去,你很快就会知道他的一切;如果你恨他,把他放到人肉引擎上去,因为那里是地狱…人肉搜索引擎其实就是在一个社区里面提出一个问题,由人工参与解答而非搜索引擎通过机器自动算法获... 来自: 人肉搜索百宝箱 ========================== 简介: 人肉搜索百宝箱是一款帮助你找人寻人的小工具,让你可同时查询Mop、天涯、百度、google等人肉搜索网站,对于找人寻人的你 来源:人民法院报,作者:梁 军幕伟春 作在高度信息化的时代,一款手机App、一条酒店入住信息、一张快递单、一份购房合同等等,都可能成为你信息泄露的新途径。90后男子杨...... 来自: 电子物证 由于需要在android项目中修改dex文件,所以自己实现了一个dex文件头修复。代码如下,可以直接拿来用。比较简单所以就不注释了。publicclassFixDexHeaderUtil{ publi... 来自: 小小程序猿 如果你看不见你还能编程吗?投递人 itwriter 发布于2011-09-2110:50 评论(22) 有2227人阅读  [收藏]  « »  这是个StackOverflow上的问题 Howcan... 来自: 菜鸟的修炼 转:https://bbs.pediy.com/thread-219227.htm前段时间由于工作需要,需要对一个360加固后的APK进行脱壳,网上查了一些相关资料,发现一篇论坛里前辈写的帖子《360... 来自: zhangmiaoping23的专栏 样本来自https://www.52pojie.cn/thread-595960-1-1.html老版本360加固在assets目录下添加了libjiagu.so文件。关键字符串加密的方式为先与5A异... 来自: houjingyi的博客 很久没玩逆向了,今天权当复习,顺便做个笔记文章中用到的demo下载地址:http://download.csdn.net/detail/ccnyou/4540254附件中包含demo以及文章word原... 来自: ccnyou的专栏 前人栽树,后人吃桃。准备入坑安卓xposedhook微信(及时通信),好吧,第一步当然是论坛里面搜索啦,像掷骰子、计步器什么的都是小孩子过家家入门级别的,当然是要搞就搞(及时通信)。微信apk都60多... 来自: 六桥风月IT随笔 http://www.tuicool.com/articles/BRjEJzU创业者很苦鳖的,苦于创意,苦于开发,苦于用户体验。创业者很苦鳖的,就算把产品做好了,不推广也很难获得用户。创业者很苦鳖的,... 来自: qiezikuaichuan的专栏 说明偶然想起各种网站对账号屏蔽/打码的特点,互相结合在一起就形成了无形的隐私泄露BUG,实际上很早看过一篇文章,有关通过对某个人线索调查后猜测银行账号密码的,这在未来必然是一种恐怖诈骗行为,但是个人又... 来自: 绫里千寻的栏目 圣诞献礼!          2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 +  简... 来自: 刘伟技术博客 打开某个应用程序的配置文件Web.config后,我们会发现以下这段: < sessionState mode="InProc" stateConnectionString="tcpip=1... 来自: yszwn的专栏 0.绪论这篇文章主要为了研究双目立体视觉的最终目标——三维重建,系统的介绍了三维重建的整体步骤。双目立体视觉的整体流程包括:图像获取,摄像机标定,特征提取(稠密匹配中这一步可以省略),立体匹配,三维重... 来自: shiter编写程序的艺术 在虚拟机里安装hadoop,关闭防火墙、配置ip 我的系统环境为:win8系统、vmware11、centos81、设置虚拟机网络通信模式为host only模式 在虚拟机目录... 来自: 梦想的翅膀 卷积神经网络是深度学习的基础,但是学习CNN却不是那么简单,虽然网络上关于CNN的相关代码很多,比较经典的是tiny_cnn(C++)、DeepLearnToolbox(Matlab)等等,但通过C语... 来自: tostq的专栏 单机最大的TCP连接数及其修改 一个误解: 单个服务器程序可承受最大连接数“理论”上是“65535” .    65535这个数字的由来,很多人想当然地将它与port最大值联系起来。的确,TCP的... 来自: 田发江的专栏 最近公司安排了个任务:要求交付一个DLL,实现【PDF转换成图片】,最好的效果是能够掌握所有源码,实在不行才交付第三方DLL。研究了6个工作日+1双休+每晚9点下班,逛遍了国内外各种论坛,还是没能成功... 来自: 劼哥舍 众所周知,Activex组件没有进行有效的签名,在IE上无法安装的,除非你让用户手工开启“接收任何未签名的ActiveX”,这个很明显不现实。而组件签名需要证书,证书从哪里来,你可以选择付1000到3... 来自: jiangtongcn的专栏 上一篇博客介绍了如何解决Fragment重叠的问题,有需要的同学可以看一下,底部有demo下载。 直通车:完美解决Fragment重叠本篇博客我们来说一下怎么让fragment重新加载布局资源文件。... 来自: 喻志强的博客 我们可能经常会用到这一功能,比如有时,我们不希望用户没有进行登录访问后台的操作页面,而且这样的非法访问会让系统极为的不安全,所以我们常常需要进行登录才授权访问其它页面,否则只会出现登录页面,当然我的思... 来自: 沉默的鲨鱼的专栏 我在VC中用ADO调用Sybase ataptive anywhere中的一个专用于用户注册的存储过程时,ADO调用参考了MSDN和一些从网上收集到的样例,但总在执行if(!pRecSet->Ge... 来自: snowglede的专栏 自微软从2013版本推出新的插件注册器后,随着UI的重大更新后,问题也多了很多,前面已有博客提到注册assembly时看不到注册按钮(http://blog.csdn.net/vic0228/arti... 来自: Vic的博客 springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭... 来自: jronzhang的博客 问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统... 来自: 开发随笔 工作需求,渐变色的边框和文字,还需要显示drawable。我们知道如果是View的背景色渐变,那么很好办,只需要写一个drawable文件,里面定义shape然后设置为View的background就... 来自: 泥巴城 的博客 iOS安全攻防(二十三):Objective-C代码混淆class-dump可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄。所以,我们... 来自: 念茜的博客 测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查询是那个谁在那个时间段登录的,就考虑怎么记录每一个MYSQL账号的登录信息,在MYSQL中,每个连接都会先执... 来自: 路在脚下 以前在博客:基于PYQT编写一个人脸识别软件 中给出了我自己用PYQT编写的一个小软件。鉴于使用的是开源库——face_recogniton,尽管使用很简单,但是还有些问题,比如:识别黄种人时... 来自: hongbin_xu的博客 最近在做一个Mac下的ssh调试工具,但是出现了一点问题。后来发现居然Mac下有串口调试工具可以用,所以果断换串口了,是普通PL2303芯片的usb转串口线。 接下来说下简单的安装步骤吧。我是勤劳的... 来自: Horizen