本文说的逆向企业微信,主要是修改了企业微信的打卡定位功能,实现了不在公司范围能也可以实现范围能打卡的功能。
(一)工具类
1. MonkeyDev:类似于iOSOpenDev的开发软件, 集class-dump, Theos, 重签名等于一体,下载地址:MonkeyDev,具体的安装使用说明可以自己查看。
2. class-dump:用于导出企业微信的头文件, 便于查看需要hook的方法,下载地址:class-dump
3. restore-symbol:用于符号表恢复,下载地址:restore-symbol
4. dumpdecrypted:用于砸科非越狱应用,下载地址:dumpdecrypted
5. cycript:用于查看企业微信层级结构和数据,下载地址:cycript
6. 越狱iphone
(二)砸壳
1. 连接越狱iphone,可以通过两种方法,wifi和数据线,不管哪种方式连接,都需要在越狱iphone上下载OpenSSH
(1)wifi方式连接:mac打开终端,ssh root@手机ip
(2)在mac端使用Homebrew下载usbmux,终端运行 brew install usbmuxd,安装usbmuxd库之后,就顺带安装了一个小工具iproxy,该工具会将设备上的端口号映射到电脑上的某一个端口,终端输入 iproxy 2222 22,出现waiting for connection提示,另开终端输入ssh -p 2222 root@127.0.0.1
以上两种方式ssh到手机之后都需要输入密码,iphone默认密码为alpine,如果出现Permission denied, please try again.提示,说明默认密码给修改,如果忘记密码,可以在iphone上的iFile中前往root密码文件存放地方:/etc/master.passwd,使用文本编辑器打开master.password,找到root:XXXXXXXXX:0:0::0:0:System,XXXXXXXXX代表root密码,把它更替为ab3z4hnHA5WdU,这是对应的密码就是abc123,保存,重启手机即可。
2. 查看手机应用进程, 连接完手机之后,输入命令ps -e查看手机应用进程,目录/var后的为手机运行的app路径,找到wework结尾的应用及为企业微信所使用进程,使用cycript -p wework或者cycript -p 对应app进程pid,即可进入目标app,再使用[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]查看Documents路径为path,复制路径使用scp命令将电脑上的dumpdecrypted.dylib拷入Documents目录下,scp dumpdecrypted.dylib root@手机ip:path/Documents目录,拷贝完成之后使用砸壳命令:DYLD_INSERT_LIBRARIES=/path/to/dumpdecrypted.dylib /上面查看的企业微信的进程路径 进行砸壳。砸壳之后的Documents中会多出一个以.decrypted结尾的文件就是我们需要的企业微信的二进制文件,可以通过scp命令或者使用iFunBox将二进制文件拷贝到mac中进行分析,拷贝二进制文件到mac的命令为:scp root@192.168.2.10:path/Documents/wework.decrypted /Users/用户名/Desktop/需要拷贝的目录。
3. 使用class-dump导出企业微信的头文件,cd到拷贝到mac中的wework.decrypted同级目录下,使用class-dump命令进行导出头文件:./class-dump -SsH wework.decrypted -o /想要存放头文件的文件夹路径,稍等片刻之后即可导出企业微信的所有头文件,如下图(图1),总共5725个文件。
图1(三)导出arm64二进制文件,使用MonkeyDev编译.app文件
1. 使用pp助手下载企业微信,获取企业微信的ipa包,解压找到.app文件,显示包内容,找到一个名为wework的二进制文件或者使用我们上面砸壳得到的wework.decrypted文件,拷贝到一个新的文件夹中,使用file wework或者file wework.decrypted命令查看二进制文件内容(图2):
图2因为我们使用的是越狱的iphone6 plus,所以分离arm64二进制文件,lipo wework.decrypted -thin arm64 -output wework_arm64,得到分离后的arm64二进制文件(图3):
图32. 恢复符号表,使用restore-symbol命令./restore-symbol wework_arm64 -o ./new_wework_arm64,如果出现zsh: no such file or directory: ./restore-symbol提示,cd到restore-symbol目录下执行make指令会生成restore-symbol二进制文件,再执行./restore-symbol wework_arm64 -o ./new_wework_arm64得到恢复了符号表的arm64文件(图4),可以看到恢复符号表之后的二进制文件比之前的文件要大很多,将new_work_arm64文件拷贝复制到企业微信的ipa中的wework中(图5),修改new_wework_arm64名称为wework,覆盖原有的wework二进制文件
图4 图53. 安装MonkeyDev,新建MonkeyDev工程,xcode commond + shift + n新建project,选择MonkeyApp模板(图6)
图6新建project之后将wework.app文件拖入到项目中TargetApp文件夹下(图7),连接手机,commond + r运行,手机上就会安装另外一个企业微信app
图7(四)总结
再hook代码之前我们需要的所有的工具以及文件都已经准备完毕,之后我们开始寻找目标代码并且hook相应的方法修改经纬度实现不在制定范围能成功打卡的功能。
注:对于修改经纬度实现不在范围内打卡不是本人的初衷,只是为了研究ios逆向,不会将此功能应用在生活中,讲究诚信为本。
网友评论