美文网首页
IOS逆向笔记汇总(备用)

IOS逆向笔记汇总(备用)

作者: 乔治贝利 | 来源:发表于2018-06-05 09:00 被阅读0次

    1.砸壳dumpdecrypted下载地址

    1, ssh root@[设备ip] (iP地址为设备的iP地址)

    2, ps -e       (查看需要砸壳的进程)

    3, cycript -p  (附加进程)

    4, [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask][0]   (查看app在documents的地址)

    5.scp ~/dumpdecrypted.dylib root@[设备ip]:/var/mobile/Containers/Data/Application/2B4C6281-C015-4FF3-A8EC-5E5C7554D447/Documents (将砸壳的动态库文件存入到documets目录下)

    6.

    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/3F00BB3C-F56E-46B1-A785-562E0C130002/WeChat.app/WeChat      (砸壳)

    7.documents下的WeChat.decrypted为砸壳后的文件

    2.导出头文件class-dump下载地址

    class-dump  -s -S -H <砸壳后的文件> -o <文件存放的目录>

    3.THEOS越狱开发工具包下载地址

    1.sudo git clone --recursive https://github.com/theos/theos.git /opt/theos     (下载直接安装到/opt/theos目录下)

    2.安装dkkg ldid(安装前需要下载homebrew套件管理工具)

    homebrew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    brew install dpkg

    brew install ldid

    3.创建nic.pl工程。

    export THEOS=/opt/theos

    $THEOS/bin/nic.pl

    4.根据不同的需求创建不同的包,然后make package install 执行3个步骤 编译,打包,安装(Makefile编译的文件后面会有文档)

    5.将生成的deb安装包放入/var/root/Media/Cydia/AutoInstall目录下面。

    4.常用Tweak.xm预处理指令.(可以去http://iphonedevwiki.net/index.php/Logos查看)

    %hook classname   需要hook的类名字

    %hook a

    %end

    %orig 打印原始函数,可以修改原始参数

    %orig(@“fix the param”,param);

    %log  该指令在%hook内部使用  将函数的类名,参数等信息写入到syslog

       %log((NSString *)@“iosre”,(NSString *)@“debug”)

    %group

    hook分组需要%init来初始化这个分组,

    %group a

    %hook

    -(void)a{

    NSLog(@“aaaaa”);

    }

    %end

    %end

    %group b

    %hook

    -(void)b{

    NSLog(@“bbbb”);

    }

    %end

    %end

    %hook springboard

    -(void)method{

         if(true){

         %init(a);

    }else{

    %init(b);

    }

    }

    %ctor  完成初始化init方法的作用(不需要以%end结尾)

    %ctor{

      %init();

    }

    %new

    %hook c 动态创建一个c的class(相当于重新创建一个c的class)

    %new

    -(void)namespacenewmethod{

      NSLog(@“We’ve added a new method to c”);

    }

    %end

    %c

    该指令的等同于objc_getclass或NSClassFromString,即动态获取一个类的定义,在%hook或%ctor内使用

    5.cycript脚本语言

       可以通过获取这个对象的内存地址来操作它的函数或者属性.

        uialertview:0x166b4fb0   比如说这个uialertview在内存中的地址是0x166b4fb0,可以直接调用它的api

        [#0x166b4fb0 show]

        #查看当前布局

        UIApp.keyWindow.recursiveDescription().toString()

       #查看当前控件的父级元素

       #控件在内存中的16进制数地址.nextResponder()

        control+d  退出cycript

        cycript -p [进程id]    编辑这个进程中的脚本

    6.openssh

       ssh root@[ios设备ip]    (连接越狱手机的设备)

       openssh默认密码:alpine

       scp命令:

       将本地文件拷贝到远程:

       scp <本地文件> root@<远程ip地址>:<远程目录>

       将远程文件拷贝到本地:

       scp root@<远程ip>:<远程文件目录> <本地目录>

    7.iFiles,iFunBox文件管理工具

    iFiles ios设备查看文件系统

    iFunBox   mac设备查看ios设备的文件系统

    8.syslogd日志清空

    cydia下载syslogd插件

    cat /dev/null > /var/log/syslog

    9.二进制文件提取dyld_decache下载地址

    因为ios 很多二进制库文件被隐藏许多framwork库文件放进了cache里面

    chmod 777 /path/to/dyld_decache  9 (添加权限)

    导出framework隐藏的二进制文件

    ./dyld_decache\[v0.1c\] -o <输出目录> dyld_shared_cache_armx  

    10.reveal逆向分析

    cydia中的插件

    Reveal Loader 1.0.0

    安装后,请重启手机

    连接调试的进程就可以看到当前的ui

    11.debugserver (动态调试,附加子进程)

    debugserver

    1. scp root@[iosip]:/Developer/user/bin/debugserver ~/debugserver

    2. lipo -thin armv7s ~/debugserver -output ~/debugserver   (帮它减肥)

    3. /opt/theos/bin/ldid -Sent.xml debugserver (http://iosre.com/ent.xml)  (添加task_fore_pid权限)

    4.scp ~/debugserver root@iosip:/user/bin/debugserver(将处理好的debugserver放回去)

    5.debugserver ip:port -a "mobilesms" (附加mobilesms进程)

       debugserver -x background ip:port /application/mobilesms.app/mobilesms(启动mobilesms进程)

    12.lldb

    /Applications/Xcode.app/Contents/Developer/usr/bin/lldb

    使用usbmuxd能提升ssh的速度,lldb连接debugserver时间缩短至15秒内

    usbmuxd下载地址

    1./Users/beyond/Code/USBSSH   (将python-client目录下的tcprelay.py和usbmuxd.py两文件,复制到工作目录)

    2./Users/beyond/Code/USBSSH/tcprelay.py -t iOS的端口:mac上的端口 (即可将mac上的端口转发到iOS上的端口)

    3.debugserver附加springboard

         ssh root@localhost -p mac端口

         debugserver *:1234 -a "springboard"

    4.将本地mac端口转发到ios

    5.lldb调试

    /Applications/Xcode.app/Contents/Developer/usr/bin/lldb

    ----------------------------------------------------------------------------------------------------------------------------------------------------------

    链接远程的手机必须越狱,而且需要装上openssh

    ssh链接远程手机

    ssh root@192.168.0.112

    opens默认密码:alpine

     

    查找应用进程

    ps -e |grep <筛选目录>

     

    cycript(Cydia中的插件) 查找appdocuments位置

    cycript -p WeChat(文件名)

     [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomans:NSUserDomainMask][0]

    //砸壳命令

    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/3F00BB3C-F56E-46B1-A785-562E0C130002/WeChat.app/WeChat

    scp命令:

    将本地文件拷贝到远程:

    scp <本地文件> root@<远程ip地址>:<远程目录>

    将远程文件拷贝到本地:

    scp

    root@<远程ip>:<远程文件目录>

    <本地目录>

    导出framework隐藏的二进制文件

    ./dyld_decache\[v0.1c\] -o <输出目录> dyld_shared_cache_armx

     清空log日志文件

    cat /dev/null > /var/log/syslog

    cycript脚本注入进程

    cy#   alertView = [[UIAlertView alloc]initWithTitle:@"test" message:@"Cyrill" delegate:nilcancelButtonTitle:@"OK" otherButtonTitles:nil]

    #  ">"

    cy#  [alertView show]

    #查看当前布局

    UIApp.keyWindow.recursiveDescription().toString()

    #查看当前控件的父级元素

    #控件在内存中的16进制数地址.nextResponder()

    #可以根据内存地址去调用该

    创建nic.pl工程

    $theos是theos全局变量

    export THEOS=/opt/theos

    $THEOS/bin/nic.pl

    //导出头文件

    class-dump —arch armv7 -s -S -H <砸壳后的文件> -o <文件存放的目录>

     

    相关文章

      网友评论

          本文标题:IOS逆向笔记汇总(备用)

          本文链接:https://www.haomeiwen.com/subject/chzusftx.html