zoukankan      html  css  js  c++  java
  • iOS安全攻防(十五)使用hopper修改字符串

    个人原创,转帖请注明来源:cnblogs.com/jailbreaker

    逆向iOS的mach-o文件,除了用耳熟能详的ida反汇编器外,在mac下还有个叫做hopper的反汇编器,hopper可谓是性价比很高的利器,一年约600rmb的价格,让我等屌丝可以承受,官网地址http://www.hopperapp.com,有demo版可以试用,这篇帖子使用hopper来讲解修改字符串。

    真机运行程序,控制台输出如下:

    NewImage
     今天是圣诞节,这篇帖子的内容是把 "hello world" 修改成 “Christmas",先把目标文件拖入到hopper中,光标定位到main函数:

    NewImage

    hopper也有类似ida的f5功能,把arm汇编逆向成伪代码,ida中的这个功能,在上一篇帖子里已经用过了,这里主要讲hopper,使用快捷键alt+enter:

    NewImage

    明显看出hopper的伪代码已经是接近oc源代码了,而ida是纯c的伪代码。

    从伪代码窗口中看出main生产了一个Atom实例,而没有输出字符串的代码,但是init的方法是可以自定义的,进入Atom的init一窥究竟。

    成功加载mach-o文件之后,hopper的左侧面板会出现分析出来的类和其方法:

    NewImage

    进入init方法,看其伪代码:

    NewImage

    果然在init里输出了 “hello world”,看一下init的arm汇编代码:

    NewImage

     

    在 0000b248         add        r0, pc

    从这行后面的注释可以看出”hello world”是NSLog的参数,定位到这行,使其处于高亮状态,接着看hopper右侧栏:

    NewImage

     

    上图第一个区域指“被谁引用”,第二个区域指“从哪里引用”,在第2个区域里双击显示的指令,跳转至:

     

    NewImage

     

    继续看右侧“从哪里引用”区域:

    NewImage

     

    上图显示有2行指令,第一行直接看到“hello world”字符串,点击跳转:

    NewImage

     

    这里就是我们目的地了,除了”hello world”外,还有其他分析出来的字符串,在这行,我们打开hopper的16进制编辑器:

    NewImage

    NewImage

     

    高亮的那行16进制数字就是代表”hello world”,其中包含空格键和字符串结尾’/0。'

    双击修改成相应字符串ascii码:

    NewImage

    由于”Christmas”比原来的”hello world”字符串短,需要在’s’的后面的字节修改成00,即字符串结尾。

    修改完毕后,保存文件:

    NewImage

    接下来只要把app重新安装到ios设备里,就能显示“Cristmas”:

     

  • 相关阅读:
    改造MFC程序,使原来不支持winsocket的工程支持winsocket
    算术移位和逻辑移位实现分析
    MFC 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,已解决。
    在MFC中,使用控制台Console输出调试信息
    在MFC中使用GDI+的一般方法,以VC6.0编译器为例
    WinForm 实现主程序(exe)与其关联类库(*.dll)分开存放
    Deserializing/Serializing SOAP Messages in C#
    List分页
    ConvertJavaMiliSecondToDateTime
    中文数字大小写转阿拉伯数字
  • 原文地址:https://www.cnblogs.com/jailbreaker/p/4183954.html
Copyright © 2011-2022 走看看