我们继续分析自毁程序密码这个app,我们发现该程序会用fopen ()打开/proc/[pid]/status这个文件,随后会用fgets()和strstr()来获取,于是我们在strstr()处下个断点,然后让hex view的数据与R0同步。每次点击继续,我们都会看到strstr传入的参数。当传入的参数变为TracerPid:XXXX的时候我们停一下。因为在正常情况下,TracerPid的值应该是0。但是当被调试的时候就会变成调试器的pid。

为了防止程序发现我们在调试,在这里我们需要把值改回0。我们在hex view的2那里点击右键,然后选择edit。随后我们输入30和00,再点击”apply changes”。就可以把TracerPid改为0了。然后就可以bypass这一次的反调试的检测。

但这个程序检测TracerPid的次数非常频繁,我们要不断的修改TracerPid的值才行,这种方法实在有点治标不治本,所以我们会在下一节介绍patch so文件的方法来解决这个问题。

另外在ida动态调试过程中,除了内存中的数据可以修改,寄存器的数据也是可以动态修改的。比如说程序执行到CMP R6, #0。本来R6的值是0,经过比较后,程序会跳转到4082A3FC这个地址。

但是如果我们在PC执行到4082A1F8这条语句的时候,将R6的值动态修改为0。程序就不会进行跳转了。

你甚至可以修改PC寄存器的值来控制程序跳转到任何想要跳转到的位置,简直和ROP的原理一样。但记得要注意栈平衡等问题。

Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句的更多相关文章

  1. IDA动态调试Android的DEX文件

    Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下. IDA 6.6新添加了对dex文件的调试 ...

  2. IDA动态调试技术及Dump内存

    IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...

  3. 动态调试Android程序

    最近好几天来一直在看动态调试.首先是这一篇(http://www.52pojie.cn/forum.php?mod=viewthread&tid=293648)里面介绍了多种IDA动态调试的情 ...

  4. 动态修改 NodeJS 程序中的变量值

    如果一个 NodeJS 进程正在运行,有办法修改程序中的变量值么?答案是:通过 V8 的 Debugger 接口可以!本文将详细介绍实现步骤. 启动一个 HTTP Server 用简单的 Hello ...

  5. 修改Android 程序的icon快捷方式图标和名称

    在res/drawable-hdpi或res/drawable-ldpi或res/drawable-mdpi目录下,加下你要显示的图片,最好后缀是为.png的,然后修改AndroidManifest. ...

  6. 如何用MAT分析Android程序的内存泄露

    本文结合<Android开发艺术探索>书籍中的内存分析例子来讲解如何利用MAT工具来查找内存泄漏(以AndroidStudio开发工具为例). 1.下载MAT(Eclipse Memory ...

  7. JAVA Eclipse如何修改Android程序名称

    Values中修改strings.xml中的app_name即可   注意他是连接到AndroidManifest.xml文件的  

  8. 如何修改ionic中android程序的包名

    默认ionic新建工程的时候指定的Android版本包名是:com.ionicframework.starter:这样固定死包名的话会导致一个问题,多个ionic工程无法正常安装到手机当中,后面安装的 ...

  9. java程序的内存分配(一)

      首 页 阅览室 馆友 我的图书馆 帐号 java程序的内存分配(一) 收藏  JAVA 文件编译执行与虚拟机(JVM)介绍  Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据J ...

随机推荐

  1. Windows Azure Web Site (11) 使用源代码管理器管理Azure Web Site

    <Windows Azure Platform 系列文章目录> 熟悉Azure Web Site平台的读者都知道,我们可以通过FTP等方式,把本地的Web Application部署到微软 ...

  2. [New Portal]Windows Azure Virtual Machine (11) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (1)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  3. HT for Web嵌入QtWebKit的客户端解决方案

    HTML5已经足够强大,但很多应用还是需要独立桌面客户端的解决方案,毕竟能操作本地文件等功能还是很多工具类软件短期内无法完全采用云方案替代. 最近Adobe发布的http://brackets.io也 ...

  4. ADO.NET基础03

    数据库和VS的连接,实现数据的同步,让用户的一切信息都可以在数据库中留下记录. ADO.NET基础      它是连接所有数据库的一种特殊的技术,提供对不同的数据库统一操作接口. 在VS中也可以添加数 ...

  5. C# 与 Java 中的枚举

    C#代码: 利用扩展方法,扩展枚举功能 using System; using System.Collections.Generic; using System.Text; using System. ...

  6. Allok Video to FLV Converter 可以用的 FixFlash.exe

    纸飞机 拷至 c:\windows\system32 ok 下载链接:http://pan.baidu.com/s/1eQwz0DO 软件下载:http://pan.baidu.com/s/1sjGv ...

  7. js页面用定时任务通过AJAX获取后台数据,但是从这个页面跳转到其他页面后,定时任务仍然在定时请求后台

    setInterval(function(){//ajax 请求后台数据},1000);这个是A页面的定时器然后我在A页面通过其他请求跳转到其他页面之后后台发现A页面的定时器的那个请求仍然在执行为什么 ...

  8. 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, ...

  9. jquery表单对象属性选择器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 【转】PHP 5.3 5.4 5.5 5.6特性

    前两天,PHP5.6已经发布了.恐怕我们很多人都停留在5.2时代吧. PHP5.3 (2009-2012) PHP5.3 算是一个非常大的更新,新增了大量新特征,同时也做了一些不向下兼容的修改. 弃用 ...