转自:http://blog.csdn.net/yiyaaixuexi/article/details/8288077

你的应用正在被其他对手反向工程、跟踪和操作!你的应用是否依旧裸奔豪不防御?

郑重声明一下,懂得如何攻击才会懂得如何防御,一切都是为了之后的防御作准备。废话少说,进入正题。

今天总结一下为hack而做的准备工作。

常用的命令和工具

ps          ——显示进程状态,CPU使用率,内存使用情况等

sysctl       ——检查设定Kernel配置

netstat     ——显示网络连接,路由表,接口状态等

route        ——路由修改

renice       ——调整程序运行的优先级

ifconfig    ——查看网络配置

tcpdump   ——截获分析网络数据包

lsof           ——列出当前系统打开的文件列表,别忘记一切皆文件,包括网络连接、硬件等

otool ①     ——查看程序依赖哪些动态库信息,反编代码段……等等等等

nm ②        ——显示符号表

ldid ③      ——签名工具

gdb          ——调试工具

patch       ——补丁工具

SSH         ——远程控制

备注:

① otool,可查看可执行程序都链接了那些库:

otool  -L WQAlbum

可以得到:

WQAlbum:
/System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AdSupport.framework/AdSupport (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/System/Library/Frameworks//MediaPlayer.framework/MediaPlayer (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 40.0.0)
/System/Library/Frameworks/CoreMedia.framework/CoreMedia (compatibility version 1.0.0, current version 1.0.0)
……

可以反编译WQAlbum的__TEXT__段内容, 截前10行:

otool -tV WQAlbum |head -n 10 
可以得到:

WQAlbum:
(__TEXT,__text) section
start:
00002de0pushl$0x00
00002de2movl%esp,%ebp
00002de4andl$0xf0,%esp
00002de7subl$0x10,%esp
00002deamovl0x04(%ebp),%ebx
……

② nm,显示程序符号表,用我自己的应用程序私人相册现身说法一下: 

nm -g WQAlbum  ( -g 代表 global)

可以得到:

001e5eec S _OBJC_IVAR_$_WQPhotoViewController.albumObject
001e5efc S _OBJC_IVAR_$_WQPhotoViewController.int_current
001e5f00 S _OBJC_IVAR_$_WQPhotoViewController.int_total

其中,WQPhotoViewController为类名,albumObject为该类的成员

③ ldid,是iPhoneOS.platform提供的签名工具,我们自己编译的程序需要签上名才能跑在iPhone/iPad上,使用方法
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
ldid -S helloworld 

编译Hello world

1.首先找到编译器:

 

arm-apple-darwin10-llvm-gcc-4.2 就是了。

为了方便起见,可以在.bashrc或者profile 配置下环境变量,方便编译。

2.找到SDK

编译我们自己的程序的时候需要指定该目录下的SDK。

3.来个经典Hello world :

  1. #include <stdio.h>
  2. int main(){
  3. printf("Hello world !!!\n");
  4. return 0;
  5. }

4.编译

其中 -isysroot用来指定build时的SDK

5.校验

file查看一下类型,没问题。

6.SCP给iPhone、iPad

前提是,设备已经越狱并且安装了SSH,且必须在同一网段。

$scp helloworld root@x.x.x.x:hello world

7.登录设备签名

$ssh -l root x.x.x.x

#ldid -S helloworld

8.执行程序

#./helloworld

Hello world !!!

运行成功,这就完成了最简单的手动执行自己的应用程序。

iOS安全攻防(一):Hack必备的命令与工具的更多相关文章

  1. windows必备,命令行工具cmder

    下载cmder并安装! 64位可下,亲测: http://www.wmzhe.com/soft-31133.html 创建文件夹并进入文件夹命令: mkdir web-server && ...

  2. iOS安全攻防(二):后台daemon非法窃取用户iTunesstore信息

    转自:http://blog.csdn.net/yiyaaixuexi/article/details/8293020 开机自启动 在iOS安全攻防(一):Hack必备的命令与工具中,介绍了如何编译自 ...

  3. 《九阴真经:iOS黑客攻防秘籍》新书发布

    本书内容易于理解,可以让读者循序渐进.系统性地学习iOS安全技术.书中首先细致地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了汇编基础.动态调试.静态分析.注入与hook.文件格式,最后为大家呈现 ...

  4. iOS中的CocoaPods用法及常用命令

     CocoaPods是什么? ***CocoaPods的使用场景:*** 1. 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用 ...

  5. iOS开发者必备的10款工具

    当前iOS和Android两大移动操作系统“二足鼎立”,几乎覆盖了市面上大部分的智能手机.相比Android,iOS开发适配更简单,且随着各种实用工具和Swift语言的出现,iOS开发门槛地降低,开发 ...

  6. iOS安全攻防

    iOS安全攻防 http://www.docin.com/p-760264769.html

  7. iOS安全攻防(二十三):Objective-C代码混淆

    iOS安全攻防(二十三):Objective-C代码混淆 class-dump能够非常方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完好的程序给同行留下笑柄. 所以 ...

  8. 必备Linux命令和C语言基础

    每一个学习嵌入式单片机的伙伴我相信对于这两个都不陌生,这毕竟是嵌入式单片机的生存之道    所有基础还是要打牢的   有句老话说的好基础不牢地动山摇    下面看下系统的资料吧   希望能对大家有所帮 ...

  9. IOS开发之----常用的基本GDB命令【转】

    原文地址:http://blog.sina.com.cn/s/blog_71715bf801016d2y.html gdb不是万能的,可是没有gdb却是万万不能的.这里给大家简单介绍下iOS开发中最基 ...

随机推荐

  1. 3D开发基础知识和简单示例

    引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...

  2. Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结

    Bootstrap时间日历插件bootstrap-datetimepicker配置与应用小结   by:授客 QQ:1033553122 1.   测试环境 win7 JQuery-3.2.1.min ...

  3. RDIFramework.NET敏捷开发框架 ━ 工作流程组件介绍

    RDIFramework.NET,基于.NET的快速信息化系统敏捷开发.整合框架,给用户和开发者最佳的.Net框架部署方案. 1.RDIFramework.NET敏捷开发框架介绍 RDIFramewo ...

  4. 11.JavaCC官方入门指南-例6

    例6:计算器--添加括号.一元运算符和历史记录 1.calculator3.jj   我们只需要再添加一些特色,就可以得到一个可用的四则运算计算器.在这一版的修改中 ,我们将使得程序可以接收括号.负值 ...

  5. 程序运行时间测试 - 使用系统函数 getrusage 获取程序运行时间

    https://github.com/yaowenxu/Workplace/blob/master/timer/getrusagetimer.c 关键结构体: struct rusage { stru ...

  6. [Linux] 获取出日志中的邮箱shell

    需求是把所有的日志中邮箱获取出来,根据指定关键字过滤,邮箱的格式是\txxx@xxx\t的格式,日志的存放是按照日期作为目录 #!/bin/bash logBasePath="/data1/ ...

  7. python类属性 静态方法

      实例 实例就是由对象创建出来的实实在在的存在 创建出来的对象叫做类的实例 创建对象的动作叫做实例化 对象的属性叫做实例的属性 对象调用的方法叫做实例方法   类是一个特殊的对象   类属性 类属性 ...

  8. Vue动态加载图片图片不显示

    图片是放在assets文件夹下的 使用require进行解决 图片不显示的原因 在webpack,将图片放在assets中,会将图片图片来当做模块来用,因为是动态加载的,所以url-loader将无法 ...

  9. Kali设置1920x1080分辨率

    root@kali:~# xrandr --newmode -hsync +vsync root@kali:~# xrandr --addmode Virtual1 1920x1080 root@ka ...

  10. python操作队列

    进行队列的操作,首先要引入queue这个库 一:设置队列(括号中是队列可容纳数据的多少,如果不设置,则可以一直增加) import queue q = queue.Queue(10) 二:添加/获取元 ...