美文网首页
逆向的笔记

逆向的笔记

作者: 赤洱 | 来源:发表于2018-05-04 16:56 被阅读84次

    ssh root@192.168.208.214 —链接手机 -------192.168.208.214
    killall SpringBoard --重启手机
    xcrun --sdk iphoneos --show-sdk-path --显示当前系统上安装的iossdk版本和路径
    THEOS_DEVICE_IP = 192.168.208.242 --在Makefile文件最上面添加,意思是指定安装的设备ip
    export THEOS=/opt/theos/ --相当于宏定义 但是电脑重启之后回失效
    echo $THEOS --查看当前有无 $THEOS 定义
    sudo mv -f ~/Desktop/CydiaSubstrate /opt/theos/lib/libsubstrate.dylib --将桌面上得文件CydiaSubstrate剪切到 后面的路径下,并命名为libsubstrate.dylib,原路径下若有这个libsubstrate.dylib文件,则覆盖掉

    sudo chmod 777 /opt/theos/bin/ldid --给ldid获取可读可写权限 (Permission denied 报这个错误的时候要执行下)
    设备上的文件获取权限:先cd到该文件路径下,然后输入 chmod 777 +该文件名 就可以获取到权限,跟mac上不同
    cd ~/Desktop/ -- 直接进入Desktop路径下

    砸壳步骤:
    1.链接到手机 ssh root@192.168.214.14
    2.找到目标程序的路径 find /var/mobile/Applications/ -name MicroMessenger --找到某个app的路径 手机的要先用命令行进入手机
    exp:淘宝app路径 /var/mobile/Applications/6D31F4DA-FA89-464D-A68E-D7F6E9BB8CF3/Taobao2013.app/Taobao2013
    3.cd到 放有dumpdecrypted.dylib的路径下 cd /var/tmp/ --dumpdecrypted.dylib 貌似每次都要copy下
    4.执行下面的
    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/6D31F4DA-FA89-464D-A68E-D7F6E9BB8CF3/Taobao2013.app/Taobao2013 ---开始砸淘宝的壳
    5./var/tmp/ 路径下会生成一个叫做 xxx.decrypted 的文件,这就是砸壳成功后得到的东西,导出到pc上面;(要重启下iTools,不然看不到生成的文件)
    6.cd到放置 xxx.decrypted 文件的路径下 ,执行下面:
    class-dump -H SOHUVideo.decrypted -o -SOHUVideo ---用class-dump 分析 Taobao2013,得到对应的头文件

    scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework root@192.168.208.242:/System/Library/Frameworks
    -- scp -r /***/xxx -- 要拷贝文件的路径
    -- root@192.168.208.242:/System/Library/Frameworks --将上面的文件拷贝到这里,root是获取手机的权限,输入密码

    class-dump 步骤:
    将要分析的XXX.app 中包里面的XXX文件拷贝到文件夹下(我放在桌面为例),同样cd到该文件夹下,输入: class-dump -H SOHUVideo.decrypted -o -SOHUVideo 然后回车(XXX为你自己要分析的app的名字);这样就会在桌面上生成一个文件夹,叫_XXX,里面就会有分析得到的app的所有头文件(没有加密过得app可以,和源文件有一点点区别)。

    class-dump -H qiyiiPhone -o -qiyiiPhone.h

    创建Theos步骤:

    1. cd到工程路径下(比如 /Users/user/Documents/IOSHack);
      2.输入: /opt/theos/bin/nic.pl --作用 启动NIC(new Instance Creator)
      这一步可以先设置环境变量,然后在执行:
      export THEOS=/opt/theos --设置环境变量,每次重启之后都要设置~
      $THEOS/bin/nic.pl --启动 NIC
      3.输入 9 回车 --选择模板
      4.输入工程名:*******;此时还要输入deb的名字(类似Bundle identifier);然后还要输入作者名;
      5.这一步要输入tweak作用对象的bundle identifier(例如:com.apple.mobilephone--系统的电话模块.可以在应用IPA文件解压后得到的文件夹下iTunesMetadata.
      plist文件中找到。)
      6.Theos 要求制定tweak安装完成后要重启的应用,比如上面输入的bundle identifier为: com.apple.mobilephone,则这里输入进程名:mobilephone(
      这一步书上有问题,作者已经勘误说明)S
      7.以上六步回创建好Theos工程,下面在该工程目录下执行make命令(编译),会报错,打开makefile文件,在最上面添加
      ARCHS = armv7 ------制定架构
      TARGET = iPhone:7.1:4.3 -------采用7.1版本的sdk(即Xcode中的Base SDK),且发布对象为ios4.3及以上版本
      8.执行 make packgae(打包),(make package install 安装)其实就是先make再dpkg-deb
      9.常用的一些打印函数:object_getClassName(xxx) --将对象的类名用 char* 表示

    Cycript使用教程:
    1.ssh root@192.168.208.214 —链接手机
    2.ps -A | grep XXXX(SOHUVideo) --获取xxxx(app的名字)的进程 -- ps ax | grep SpringBoard
    exp:
    1):ps -ef | grep Moji --获取Moji的进程号
    2):cycript -p 682 --挂钩墨迹天气的进程,成功挂钩之后,通过UIApp.delegate 和 UIApp.keyWindow.rootViewController找到他的delegate和rootViewController;
    3):UIApp.delegate --输出Moji地delegate文件名字
    4):UIApp.keyWindow.rootViewController --找到墨迹天气的rootViewController,这里为ParentViewController
    5):输入:
    function printMethods(className) {
    var count = new new Type("I");
    var methods = class_copyMethodList(objc_getClass(className), count);
    var methodsArray = [];
    for(var i = 0; i < *count; i++) {
    var method = methods[i];
    methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
    }
    free(methods);
    free(count);
    return methodsArray;
    }
    6):输入:printMethods(ParentViewController) --会将ParentViewController里面的方法都打印出来,一大坨。。。
    7):可以看到 ShowCamera 这个方法,下面模拟点击照相机事件:
    8):[[[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0]nextResponder]ShowCamera]

    3.control + D

    var alertView = [[UIAlertView alloc] initWithTitle:@"HaoYi" message:@"HelloWordl" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil];

    验证某个函数是否被制定操作调用:
    1.exp
    %hook SBScreenShotter
    -(void)saveScreenshot:(BOOL)screenshot
    {
    %orig;
    NSLog("saveScreenshot:is called");
    }
    %end
    2.将对应的plist文件的Filter设置为:com.apple.springboard;用Theos编译打包成deb,安装在设备上,重启下,出现锁屏界面时同时按下home+lock,然后打开终端,ssh进IOS
    输入:grep iOSRE /var/log/syslog --没试过,不过看log信息应该就是这样~

    相关文章

      网友评论

          本文标题:逆向的笔记

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