iOS:经过MonkeyDev逆向微信运动,简单粗暴非越狱

前言


前一段时间,一直忙于面试,也没作研究什么稀奇古怪的技术.近来也是学习了几天的iOS逆向工程方面的知识,这里就班门弄斧下,看看如何经过逆向工程来修改微信运动数据.先看一下效果图. git


前期准备


在逆向以前咱们须要准备一下如下工做.以方便咱们的逆向功能能顺利开发.github

须要技能:面试

1.懂基本的终端指令以及操做.xcode

2.会使用Xcode.bash

3.一台未越狱的iPhone.微信


#####1. 安装PP助手app

PP助手这是主要的功能是下载越狱ipa文件,也就是脱壳文件.这里是什么脱壳文件就不过描述了.工具


#####2. 安装class-dump学习

class-dump主要是用来查看脱壳以后的Mach-O文件的所能暴露出来的头文件.如何安装呢?ui

方式一:能够直接从下面的下载地址中直接下载运行好的class-dump文件.

→ → →class-dump下载传送门

方式二:也能够去github搜索class-dump下载xcode工程运行取出Finder中的class-dump.

而后把class-dump复制到**/usr/local/bin/class-dump**便可(OS X 10.11以上).

这时候咱们直接在终端上敲出class-dump指令了.以下所示.


#####3. 安装MonkeyDev 其实为何安装MonkeyDev呢?MonkeyDev是集成与OpenDev的,可是OpenDev在13年就不在更新了,因此AloneMonkey就在此基础上作了进一步的更新,并且更加简单,更加傻瓜式.具体安装步骤能够查看原文博客.

MonkeyDev原文安装连接

安装完成以后,在新建项目的时候就会有以下的模块.


修改微信运动数据的逻辑原理


总体的示意图如上图所示.咱们把经过PP助手下载的越狱ipa文件经过class-dump指令来查看全部包含类的头文件.而后编写动态库.经过runtime的机制动态注入到破壳文件中.而后对注入完成的文件进行从新签名,最后安装应用程序.

其中MonkeyDev的做者已经把其中的三步进行了封装,我玩了玩以后,发现至关的简单粗暴无脑.


经过PP助手下载破壳ipa文件


咱们打开PP助手,而后经过"越狱程序"模块下载"微信",以下所示.

下载完成以后,在Finder里面找到对应的ipa文件 拿出来备用.以下图所示.


经过Class-dump指令查看全部头文件信息(本文可不操做)


首先,咱们先把.ipa文件进行解压.以下所示.

解压以后找到里面的WeChat,而后显示包内容.

找到包里面的WeChat文件,以下所示.

拿出来.而后使用下面class-dump指令格式

class-dump -H "Mach-O文件路径" -o "导出Headers文件的路径"

这里我直接把WeChat这个Mach-O文件放到了桌面之上.因此指令以下图所示.

执行完成以后,咱们就能够看到桌面上多了一个Headers的文件夹,打开以后全是WeChat里面的头文件.而后咱们可使用Sublime Text这个工具快速查找咱们所要的类.以下所示.


咱们主要是用到的是WCDeviceStepObject中的m7StepCount这个属性.只要咱们修改这个值就能够修改微信运动里面的步数了.


使用MonkeyDev完成三部曲.


这时候咱们就建立一个MonkeyApp工程出来.以下所示.

紧接着.咱们须要作的就是把咱们的ipa文件放到指定位置(固然是放在工程目录下了,这里就很少说了.).而后添加到工程中去.里面的put ipa or app here文件不要删除.

接着咱们就须要编译所须要的动态库就好.编写DemoDylib.m文件就好.

把DemoDylib.m文件中全部的内容删除(除导入头文件外).添加以下代码.

CHDeclareClass(WCDeviceStepObject); // declare class  
  
CHOptimizedMethod(0, self,  unsigned int, WCDeviceStepObject, m7StepCount) // hook method (with no arguments and no return value)  
{  
    // write code here ...  
      
    return 98888; //随意改数 
}  
  
  
  
CHConstructor // code block that runs immediately upon load  
{  
    @autoreleasepool  
    {  
        CHLoadLateClass(WCDeviceStepObject);  
        CHHook(0, WCDeviceStepObject,m7StepCount);  
    }  
}  
复制代码

编写完成以后这里有个坑就是不让使用runtime库,修改如图位置便可,改成NO.

而后运行完动态库,在运行App,便可安装成功两个微信.

这时候就算大功告成了.打开新安装的微信运动便可.等待几分钟数据就可修改完成代码中的数字了.


结束


到此就结束了本篇博客,骚栋班门弄斧了,Demo过大,这里就不上传了,若是有问题,欢迎指导批评.骚栋在此谢过了.


相关文章
相关标签/搜索