我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:一品彩票 > 反汇编程序 >

安卓APP动态调试-IDA实用攻略

归档日期:05-20       文本归类:反汇编程序      文章编辑:爱尚语录

  然后移动安全问题接憧而至,主要分为移动断网络安全和客户端应用安全。目前移动APP软件保护方面还处于初级阶段,许多厂商对APP安全认识不够深入,产品未经过加密处理,使得逆向分析者能够通过逆向分析、动态调试等技术来破解APP,这样APP原本需要账号密码的功能可以被破解者顺利绕过,使得厂商利益严重受损。

  对未加壳的APP进行动态调试,通常可以非常顺利且快速地绕过一些登陆限制或功能限制。本文将以安卓APP为例,来详细介绍一下移动APP动态调试技术。

  下载完安装包后解压到任意一目录,然后点击运行SDK Manager.exe,然后选择你需要的版本进行安装,如图:

  动态调试可以用真实的手机来做调试环境,也可以用虚拟机来做调试环境,本文采用虚拟机环境。因此创建虚拟机步骤如下:

  这里Target 就是前面步骤中安装的SDK 选择任意你觉得喜欢的版本就可以。点击OK 就创建完毕。

  IDA6.6开始支持安卓APP指令的调试,现该版本已经提供免费下载安装,请自行搜搜。

  安卓APP应用程序后缀为apk,实际上是一个压缩包,我们把它改后缀为rar打开如图:

  其中classes.dex是应用的主要执行程序,包含着所有Dalvik指令。我们用APK改之理打开apk,软件会自动对其进行反编译。反编译后会有很多smail文件,这些文件保存的就是APP的Dalvik指令。

  然后点击保存按钮,然后编译生成新的apk文件。接着打开Eclipse –windows-Android Virtual Device,选择刚才创建的虚拟机,然后点击start,虚拟机便开始运行。偶尔如果Eclipse启动失败,报错,可以同目录下修改配置文件:

  把配置参数原本为512的改为256 原本为1024的改为512,然后再尝试启动。

  这里先不进入adb shell,在DOS命令行下执行命令:adb install d:\1.apk 来安装我们刚才重新编译好的APK文件。安装完毕会有成功提示。

  其他默认不变,端口这里改为8700。这里默认端口是23946,我在这里困扰了很久,就是因为这个端口没有改为8700所致。然后我们看看这个8700端口是怎么来的。在Android SDK里提供了一款工具DDMS,用来监视APP的运行状态和结果。在SDK的TOOLS目录有个DDMS.BAT的脚步,运行后就会启动DDMS。由于我的本机安装了SDK的ADT插件,DDMS集成到了Eclips中,打开Eclips-Open perspective-ddms就启动了DDMS。

  到此所有的工作就准备就绪,然后就可以下断点来调试该APP了。我们在APK改之理中在com目录下查看smali文件 发现MainActivity.smali里有一个感兴趣的函数getPwdFromPic(),那么我们就对它下断以跟踪APP的运行。

  调试过程中有一个问题出现了很多次,浪费了我大量的时间,就在写文章的时候,操作时还是遇到了这样的问题。就是点击启动后IDA提示can’t bind socket,琢磨了很久终于找到原因了,当打开过一次DDMS后 每次启动Eclips都会启动DDMS 而8700端口正是被这个DDMS给占用了,然后每次都会启动失败,解决办法就是 虚拟机运行起来后关闭掉Eclips,这时一切就正常了!

  然后按F7或F8单步跟踪程序流程,同时可以观察到变量值的变化,也可以在IDA右键选择图形视图,可以看到整个APP执行的流程图:

  如上图所示 变量窗口中我们输入了123 被转化成的密码是么广亡,pw变量也显示出了正确的密码,其实这个时候已经很容易判断出正确密码了。

  通常为了加密保护等措施,有时dex执行过程中会调用动态链接库文件,该文件以so为后缀,存在于APP文件包里。

  3、由于当前程序不是在动态链接库领空,这时我们要重新打开一个IDA,用它打开需要调试的so文件,找到需要下断的位置的文件偏移,并做记录,然后关闭后面打开的这个IDA。

  4、在原IDA界面按下ctrl+s键,找到并找到需要调试的so,同时记录该文件的加载基址。然后点击OK 或者cancel按钮关闭对线、按下快捷键G 输入基址+文件偏移所得地址,点击OK 就跳转到SO文件需要下断的地方,这时按下F2键设置断点。当APP执行到此处时便可以断下来。

  这时由于APP还未运行,那么反调试函数也起不了作用,按照4.2中第2步把APP挂起。这时IDA会中断在某个位置

  然后点击debugger-debugger opions设置如下:

  【日常吐槽·第六期】安卓模拟器充当真机调试ByEOS.最近一直在瞎搞、东西比较碎,不过主要是在研究脚本批处理之类的,想着各种一键式操作。而用模拟器来充当真机调试也是其中的一个环节,以为有涉及打安卓包到...博文来自:

  IDAPro使用(静态分析+动态调试)()IDA动态调试流程(博文来自:

  之前的安卓逆向都是在Java层上面的,但是当前大多数App,为了安全或者效率问题,会把一些重要功能放到native层,所以这里通过例子记录一下使用IDA对so文件进行调试的过程并对要点进行总结。一、I...博文来自:

  一、前奏1.demo.apk、IDA6.6以上、adb等工具,具体可参考工具篇demo.apk的主逻辑代码如下:2.什么是so文件?so文件是unix的动态连接库,我们知道Android系统是类lin...博文来自:

  有时候,我们需要动态调试安卓APP的so文件,尤其是当Unity3D转向IL2CPP的时候,有一些逻辑或者变量只能通过这种方式才能获取。第一步:打开IDA,把需要分析的so文件拖进去,等待IDA进行分...博文来自:

  经常为android没有好的输出用于调试信息而烦恼,有一次想应该在界面中布局一个TextVie用于调试信息输出,调试好后再删除即可,很方便。ImageViewandroid:id=@+id/debu...博文来自:

  基于AndroidStudio调试教程。适合初学者入门,也适合老司机进阶。博文来自:

  一、逆向分析年前必须搞定短视频四小龙,之前已经搞定某音和某山小视频了,那么今天继续来搞下一个,在之前一篇文章中已经详细分析了不了解的同学,可以点击详情:某音和某山小视频的数据请求加密协议,通过IDA动...博文来自:

  一、前言今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了...博文来自:

  0x00   为了避免我们的so文件被动态分析,我们通常在so中加入一些反调试代码,常见的Androidnative反调试方法有以下几种。   1、直接调用ptrace(PTRACE_TRACEME,...博文来自:

  Android—App—必备开发组件—调试工具篇—Stetho[配合OkHttp框架使用]

  ①简洁,不需要测试同学额外安装软件+配置代理网络,仅仅一个Chrome浏览器,一根USB/Type-C线,即用即走~②无需Root,即可查看手机APP中的缓存数据 ③方便其他非测试同学,也能随时查看H...博文来自:

  今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者...博文来自:

  本文描述了如何使用IDAPro远程调试Android设备中的进程,及过程中可能遇到的问题,以作备忘。...博文来自:

  1.调试的过程。2.查看和跟踪流程内存值.3.遇到的问题(类型转换的问题)3.修改某个寄存器的值...博文来自:

  分析一个android应用时,核心算法代码大部分都在so库中,除了使用IDA静态分析,还需要通过动态调试来获取执行流程以及中间数据。这里记录的是使用IDA进行调试的方法,相比而言,IDA动态调试时不能...博文来自:

  一、逆向分析年前必须搞定短视频四小龙,之前已经搞定前面一个某短视频,不了解的同学可以点击这里:分析某短视频的数据请求加密协议第一篇,那么今天继续来搞下一个,在之前一篇文章中已经详细分析了某短视频的数据...博文来自:

  一开始打算用模拟器的,目前市面上的模拟器大多是arm架构的,号称支持x86的例如bluestack,完全莫名其妙(也许是因为我下的是cn版的),结果就是不能用android_server调试,只能用g...博文来自:

  很多时候在对apk分析时,静态调试显得苍白无力,需要我们手动算很多东西,而动态调试则可以直接观察结果,一般的方法都需要再手机端运行服务才可以进行调试,下面我们就来学习一下三个调试方法jeb动态调试使用...博文来自:

  那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围。当然动态方式很多,所以这里就分...博文来自:

  初涉移动端,请各位前辈多多指教!本文参考在此,对作者表示感谢!跟踪apk一般的做法是在反编译的sma...博文来自:

  前言以前懵懵懂懂的我,突然感觉长大了,希望我们能长长久久。今天在调试一个案例的时候,又是折腾了好久。特此记录下。错误这是一个CryptoDemo案例,我试图调试encrypt.so这个库文件的,刚开始...博文来自:

  今天国庆的第六天,西安淅淅沥沥小雨下个不停,索性卧在床上不如品一杯西湖龙井,更新一篇博客,一来帮助需要之人;二来加深自己的理解。问题篇:在上一篇中讲到了关于Androidso的动态调试,没看的可以点这...博文来自:

  虽然linux下有gdb,radare2等神器,但有时候难免有用到ida动态调试linux下文件的时候,这次自己按照网上教程来但是踩了无数坑,所以打算自己写一篇教程1.把ida中dbgsrv目录下的l...博文来自:

  之前看过吾爱破解论坛一个关于Android逆向动态调试的经验总结帖,那个帖子写的很好,对Android的脱壳和破解很有帮助,之前我们老师在上课的时候也讲过集中调试的方法,但是现在不太实用。对吾爱破解...博文来自:

  自己写了一个demo,内容狠简单:so中就做一个加法运算,代码逻辑如下: 然后这样调用: 在IDA中查看代码的相对地址是BBC 然后执行androidserver端口转发 及 然后在启动另一个ida ...博文来自:

  一、样本静态分析最近有位同学发了一个样本给我,主要是有一个解密方法,把字符串加密了,加解密方法都放在so中,所以之前也没怎么去给大家介绍arm指令和解密算法等知识,正好借助这个样本给大家介绍一些so加...博文来自:

  本文总结网上一些做法,结合自己的经验,提供不反编、修改、重新编译apk而调试app的方法。一、ida动态启动调试(1)打开ida,直接将apk拖到ida中,选择class.dex,如下图...博文来自:

  今天已是国庆的第五天,白天去武馆训练过后,晚上回来品一杯西湖龙井,更一篇博客,一来帮助需要之人,二来加深自己的理解。下面就说关于在IDA中Androidso的动态调试的问题以及在so的三个层次下断点的...博文来自:

  社会化推荐 本文是论文《一种结合推荐对象间关联关系的社会化推荐算法》的笔记(下)。该论文提出的算法是以PMF为框架基础的。因而若对PMF不太了解的话,可以参考我的上一篇文章脑补一下,当然,那篇文章只是...博文来自:

  普通流视频(完整视频) 高清视频(分段视频) 1080P-fhd,超...博文来自:

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:

  以前在windows下用的mysql都是通过下载exe格式的安装包来安装使用,今天偶然下到一个免安装版本的,使用了一番,对mysql的启动之类的有了一个重新认识,记录下。 mysql-5.6.16-w...博文来自:

  连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为...博文来自:

  nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl...博文来自:

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:

  在之前完成了《C++开发人脸性别识别教程》系列博客的编写之后,我开始将工作重点转移到与我的研究生课题关联更为密切的深度学习上来。深度学习编程有几个经典的框架,首屈一指的当属Caffe,然后还有Ma...博文来自:

  好久没上csdn了, 在这里特别想念大家, 最近公司一段时间忙吧,无暇东顾。扫噶,还是直接进入主题吧      大家都知道 直接从google down下来的 zxing二维码扫描 是 在扫描界面 ...博文来自:

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:

  此处仅以VS2010为例,详细说明一下如何在VS环境下生成和使用C++的静态库与动态库。Qt下生成和使用静态和动态库后续再讲。 本文仅供初学者参考,如果有问题欢迎大家指正。        首先简单地理...博文来自:

  fragment是大家项目都会用到的,一般都是用来做选项卡的切换,这里记录一下使用fragment出现的错误以及解决办法。 错误信息1: 07-29 10:11:40.009: ERROR/And...博文来自:

本文链接:http://explodingspec.com/fanhuibianchengxu/280.html