逆向开发基础工具

小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗?

小程:理解为逆向行驶也没错。一般的项目是从无到有,从大唐而来到西方取经,而逆向是从已有的状态入手,分析出已有的流程与结构的手段。

iOS上的逆向开发,是一件有趣的事情(虽然有时也会很痛苦),而且还可能给你带来收益。

在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位、目标代码的调试,再到注入微信的实战示例。读者如果感兴趣,可以关注小程的微信公众号“广州小程”,获得后续的更新。

本文介绍iOS逆向的基础工具的使用。

硬件方面,你需要一台iOS设备(iphone/itouch/ipad,以下都称为手机或iphone),以及一台电脑。电脑方面,小程建议你使用mac电脑,因为它的环境可以解决很多无谓的问题,当然如果你有很强的解决问题的能力并且坚持用windows来安装mac虚拟机的话,也是可以的。

系统环境方面,你需要给手机越狱。说到越狱,小程就想起scofield:

但这里的越狱,是指对手机有更多的操作权限,比如在手机运行命令行终端、往root等目录写入数据、安装非来自AppStore的应用(之前就介绍过重签名后安装ipa),等等。但注意一点,越狱后,沙盒的机制还是存在的,比如你的App还是不能往其它App的Document目录写入数据。

小程在写这篇文章时,10.2以上的系统还不支持越狱,所以准备用于越狱的系统应该是10.2或低于10.2。使用pp助手、爱思之类的工具进行越狱。

解决了硬件和系统越狱的需求后,接着就是逆向的基本工具了,这些工具可以让你逼近攻击目标。

(1)ssh

ssh,就是Secure Shell,即安全外壳协议(ssh协议可以防范ip或dns欺骗,加密而且压缩数据,被广泛使用),常用于远程登陆。这里指的是ssh客户端。

如果最终是用yalu102来越狱的话,越狱后自带ssh(但scp要自行安装)。

可以cydia中搜索Terminal并安装,然后在这个终端上敲上ssh来执行,验证是不是安装了ssh。如果发现没有,那可以在cydia中搜索“openssh”或“ssh connect”来进行安装。

试用ssh:

  • 在手机的wifi页面,找出当前使用的ip。
  • 在电脑上(mac机自带ssh客户端),使用ssh登陆设备:ssh [email protected]
  • ssh登陆到手机,之后操作的就是这台手机,电脑上的键盘就是手机的键盘。

小白:喂,登陆时需要写密码,是多少呢?

ios设备的两个默认ssh账号:
root,默认密码:alpine
mobile,默认密码:alpine

ssh登陆示例:
$ ssh [email protected]
或者:
$ ssh -l root 192.168.1.100
-----
[email protected]‘s password:(输入密码,回车)
810:~ root#

登陆后,修改root密码:
# passwd

登陆后,修改mobile密码:
# passwd mobile

每次ssh到手机,都要经过密码验证。如果想简化这一步,那么可以使用iosod来建立这个信任:
cd /opt/iosopendev/bin  --前提是,已经安装了iosopendev
./iosod sshkey -h 192.168.1.101
这样就对这个ip建立信任,之后ssh登陆时不再输入密码。

上面已经提到了iOSOpenDev,这是一个编写注入代码的实用工具,后续再具体介绍。

这里再介绍使用ssh可能遇到的一个问题。对于ios10.1.1(其它10.x也一样),在越狱后,用ssh是登陆不上的,原因参考<http://blog.csdn.net/dianshanglian/article/details/62422627&gt;。

以下是这个网页的内容摘录:


1、SSH连接不上
在手机上安装Mterminal,运行su,输入root密码,进入root权限,执行ps aux|grep dropbear
(1)如果你看到的进程没有dropbear
执行/usr/local/bin/dropbear -F -R -p 22
然后就可以连接了,重启依然有效
(2)如果你看到进程是这样:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22
意思是只能数据线重定向连接SSH,如果你想改成WIFI可以访问
那么用Filza修改/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist
把里面有个参数127.0.0.1:22改成22保存,重启手机即可
UUID在每个人手机上不一样

2、修复SCP
你会发现yalu102自带的SSH无法用WINSCP传输文件,因为缺少了scp
很简单
(1)cydia里面安装wget
(2)在mterminal里面登陆root权限
(3)执行以下命令
wget mila432.com/scp
ldid -S scp
chmod 777 scp
mv scp /usr/bin/scp


注意,如果是用“越狱助手”来越狱的,那上面的目录改为../Application/越狱助手/yalu102.app/..

(2)scp

scp,就是secure copy,是基于ssh的远程拷贝。

一般安装完ssh客户端后就可以使用scp指令(否则,可以参考上面办法下载scp来使用)。

比如,把hellowrold文件,拷贝到手机的root用户的根目录,命名为hello:

scp helloworld [email protected]:hello

比如,拷贝手机里面的内容到电脑:

scp [email protected]:/User/Documents/Cracked/* .

在ssh与scp安装完毕后,就可以做一些“攻击”的事情了。

比如,让手机重启

ssh [email protected]
(810:~ root#) killall SpringBoard

比如,在手机上执行hello wrold程序

首先编译出执行文件,使用clang:
clang -o helloworld -arch armv7 helloworld.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk

拷贝执行文件到手机:
scp helloworld [email protected]:hello

登陆手机并执行:
ssh [email protected]
cd /
chmod +x hello
./hello

(3)socat

socat,是用来查看系统日志的工具。系统各个进程的动态信息、所有app的NSLog信息,都可以通过socat观察到。

安装

在cydia搜索SOcket CAT来安装,或者:
apt-get install socat   --前提是安装了apt-get

使用

socat – UNIX-CONNECT:/var/run/lockdown/syslog.sock
>watch


总结一下,本文简介了iOS逆向的准备工作,以及基础工具ssh/scp/socat的使用。这三个工具在以后的实战中会经常用到,虽然你也可以用其它工具来达到同样的目的,但小程还是建议你掌握它们的使用。本文的内容只需按步操作,难度系数为低。

原文地址:http://blog.51cto.com/13136504/2062567

时间: 2024-10-09 10:46:39

逆向开发基础工具的相关文章

iOS逆向开发(1):基础工具 | ssh | scp | socat

小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情(虽然有时很痛苦),而且还可能给你带来收益. 在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位.目标代码的调试,再到注入微信的实战示例. 本文介绍iOS逆向的基础工具的使用. 硬件方面,你需要一台iOS设备(iphone/itouch/ipad,以下

让开发效率爆表的Guava ---- 基础工具篇

使用现成的库的原因, 既能减少自己开发所带来的bug, 同时又大大提高了开发效率, 当然这也是Java语言流行的一个原因----拥有海量的开源包. 本篇从Guava基础工具入手开始介绍这个广泛使用的库: package com.wenniuwuren.guava; import java.io.UnsupportedEncodingException; import java.util.Date; import java.util.HashMap; import com.google.commo

项目管理师备考知识点精讲之信息系统开发基础考情分析

信息系统项目管理师考试是计算机软件水平考试中的一个高级资格考试,是软考中的大热门.信息系统项目管理师证书含金量高,可以评高级职称,是申请高级项目经理的必要条件,还可以挂靠.下面希赛软考学院为您带来信息系统项目管理师备考知识点集锦之信息系统开发基础考情分析,专业老师根据历年真题分析总结的重点内容,让您备考期间少走弯路,高效学习,顺利通过考试.  信息系统开发基础考情分析 根据对历年的考试真题进行分析,本章要求考生掌握以下几个方面的知识: (1)信息与信息系统:信息系统的概念.信息系统的功能.信息系

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

逆向与反汇编工具

http://blog.163.com/[email protected]/blog/static/823405412012930555115/ 第 1 章           逆向与反汇编工具 了解反汇编的一些背景知识后,再深入学习IDA Pro之前,介绍其他一些用于二进制文件的逆向工程工具,会对我们学习有所帮助.这些工具大多在IDA之前发布,并且仍然可用于快速分析二进制文件,以及审查IDA的分析结果.如我们所见,IDA将这些工具的诸多功能整合到它的用户界面中,为逆向工程提供了一个集成环境.最

[枫叶学院] Unity3d高级开发教程 工具集(一) 哈希列表——强大的自定义数据集

在日常开发中,数据集合是我们必不可少的重要工具之一.在C#中,.Net Framework也为我们提供了种类繁多,功能多样的数据集工具.在此,我基于List<T> 和 HashTable制作了一个功能强大的数据集,我将其命名为HashList.他集二者的优势于一身,既支持数组索引的操作,同时也支持键值对操作.我更在此基础上封装了一些常用的工具函数,使其能够极大的方便我们日常开发中的数据管理. HashList 核心功能如下: 1.类型安全的数据集合,省去了强制转换的繁冗操作 2.根据数组索引,

IOS开发基础环境搭建

一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:          百度网盘:链接:http://pan.baidu.com/s/1c28EkpE 密码:93tl 解压后如下,点击如下脚本进行安装:按提示进行: 服务配置(按需配置): 这里仅限配置网络功能即可:选择1 回车-选择桥接模式 选择2启用桥接服务 三.安装macos虚拟机 注意:查看本机cup类型

快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础

上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是Windows,装虚拟机也麻烦,所以还不如30块钱 买个腾讯云,用putty远程练上去写代码呢. 我一直都是putty+VIM在Linux下开发代码,好几年了,只要把putty和VIM配置好,其实 开发效率挺高的. 买好腾讯云后,装个Centos,会分配个外网IP,然后买个域名,在DNSPod解析过去

如何自己开发软件测试工具?

PS:这是我在网上看到的一篇文章,写的挺好的,不光指的是测试工具,对如何学习新的编程知识也有一定的启发,希望和大家交流.^_^ 序言:一说到自动化测试工具,大家很多人都会想到的是QTP.LR或者selenium之类的工具,要大家一开始设计一个这样的工具,其实确实很有难度,因为其包含的功能细节太过庞大.当年的我,开始设计开发工具的过程中,走了很多弯路,例如:做工具的界面技术的历程,刚开始用tcl/tk脚本语言,用tcl写底层框架,用tk写图形界面,后来发现tk虽然构造图形方便,但可拓展性实在太差.