iOS逆向分析app
适合有一定的逆向编程基础的人看。
背景:自动抢红包的脚本
工具:cyscript,reveal,class-dump,越狱的pod等。
这里先上一张reveal的分析图:

小结:获取到了真个软件的整体结构视图。极大的方便我们进行分析。这个是淘宝的技术嘉年华中重点介绍的亮点工具。
接着,可以通过:class-dump工具,dump出头文件进行辅助分析,方便动态调用各种接口。
接下来,开始实战:远程ssh登陆后,直接,ps aux|grep "Micro*" 获取微信的pid。
cycript -p xxx // 这里直接勾住进程,开始试脚本
// 前期经过reveal分析,知道了微信的整体软件架构。
// 然后直接获取主rootViewController 的currentViewController
var currentViewC = [[UIApplication sharedApplication].keyWindow.rootViewController currentViewController]
// 接下来就是直接获取所有的viewControllers
[currentViewC viewControllers]
var mainFrameVC = [currentViewC viewControllers][0]
[mainFrameVC tableView:mainFrameVC->m_tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:1]] // 选择指定的tableViewCell, m_tableView是down出来的头文件中发现的定义
[currentViewC viewControllers] // 现在获取到了最新的ViewControllers
var baseMsgVC = [currentViewC viewControllers][1] // 获取到了消息中的视图
baseMsgVC->m_tableView // 选择指定的tableView, m_tableView是down出来的头文件中发现的定义
var viewCell = [baseMsgVC->m_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]
var view = viewCell.subviews[0]
var messageView = view.subviews[0]
[messageView onClick] // onClick 方法也是头文件中找到的定义,能发现已经点到了红包了。酷。。。
小结,过程中,可以随时判断自己的逻辑是否出错,例如,view.backgroundColor = [UIColor greenColor] , UIAlertView等。
再上一张过程图片:

这个是在实际中可以看到的信息,非常的好玩,可以dump出各种各样的东西。userinterface,layer,frame,autoresize,完整的看到了实现参数。可以模拟点击各种东西了。加入各种条件判断。最后也完成了。
然后参考已经dump出来的头文件,写相应的脚本,按照这样的过程,就能做出一个:通过模拟点击来实现抢红包的过程。
小结:注意软件安全,头文件中暴露出来的信息。可以采用混淆加密等常见方式来预防。
大概看到这儿,也大概了解了一点ios逆向的东西,然而,我觉得还是要用到正道上才是对的,以学习的目的,例如,最近在看的新版的UC浏览器,他的主页做的非常复杂,而有非常优雅,我想知道它的结构是什么样子的,
那么现在就能直接看了。局部内嵌webView的方式写UI。结构清晰明了,而不是一开始猜想的那样子,以controller作为一个cell,如下图所示:

总结:学会善用佳软,触类旁通。
iOS逆向分析app的更多相关文章
- Android无需权限显示悬浮窗, 兼谈逆向分析app
前言 最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请android. ...
- iOS逆向一个APP指令集
一.脱壳获取.app文件 1.查询壳有没加密 otool -l mac-o文件 | grep crypt 2.Clutch -i Clutch -d num 3.脱壳后的位置 /private/v ...
- 偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
Intro 虽然“只有偏执狂才能够生存”这句话已经被假药停给毁了,但是作为一只有逼格的高大上的iOS逆向分析研究员,难道如果有现成的macOS/iOS全版本镜像可以下载并且无限“漫游”,难道你就不想来 ...
- iOS逆向实战与工具使用(微信添加好友自动确认)
iOS逆向实战与工具使用(微信添加好友自动确认) 原文链接 源码地址 WeChatPlugin-iOS Mac OS 版微信小助手(远程控制.消息防撤回.自动回复.微信多开) 一.前言 本篇主要实现在 ...
- iOS逆向系列-逆向APP思路
界面分析 通过Cycript.Reveal. 对于Reveal安装配置可参考配置iOS逆向系列-Reveal 通过Reveal找到内存中的UI对象 静态分析 开发者编写的所有代码最终编译链接到Mach ...
- iOS逆向工程之Hopper+LLDB调试第三方App
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...
- 【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇
由于后续篇幅比较大,所以调整了内容结构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 APP分析篇 [HELLO WAKA]WAKA iOS客户端 之二 架构设计与实现篇 [HELL ...
- 一文了解安卓APP逆向分析与保护机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- Soul Android app 悬浮view以及帖子中view的联动刷新逆向分析
Soul app是我司的竞品,对它的语音音乐播放同步联动的逻辑很感兴趣,于是就开启了一波逆向分析. 下面看代码,以及技术分析,直接步入正轨,哈哈. 我们根据https://github.com/xin ...
随机推荐
- Python的平凡之路(9)
一.Paramiko模块练习 1. Paramiko模块介绍 Paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接 2 .SSHclie ...
- Android studio的深坑 导jar包重复的异常处理
导包重复这个问题折磨了整整一天!! 第一个方法在gradle文件下看看有没有重复的包 如果有那么一切都是浮云分分钟搞定 ,最可恶的是在gradle里面没有. 在gradle里面找不到的话就要考虑一下 ...
- 2016 - 1 - 24 CSS初步
1.The difference between CSS and HTML HTML document is that it specities the content of the page. An ...
- SqlServer性能优化 手工性能收集动态管理视图(三)
动态管理视图: 具体的实例语句: --关于语句执行的基本情况 select * from sys.dm_exec_query_stats --动态管理函数 需要提供参数 select top 1 ...
- jquery操作select(增加,删除,清空)
jQuery获取Select选择的Text和Value: $("#select_id").change(function(){//code...}); //为Select添加事件, ...
- LPTHW 笨方法学习python 16章
根据16章的内容作了一些扩展. 比如,判断文件如果存在,就在文件后追加,如不存在则创建. 同时借鉴了shell命令中类似 cat <<EOF > test的方法,提示用户输入一个结尾 ...
- Hive 实战(1)--hive数据导入/导出基础
前沿: Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. ...
- ups机制下停电提前关闭oracle数据库
思路:在一个受ups保护的机器A1上写脚本,几分钟(如半分钟)ping不在ups保护的机器B,如果几次(如5次)ping不同,这时我们认为将要停电,此时脚本执行正常关闭受ups保护的机器上数据库的命令 ...
- Boot loader: Grub进阶[转]
Boot loader: Grub进阶 本文记录grub的一些进阶配置 关於核心功能当中的 vga 配置 事实上,你的 tty1~tty6 除了 80x24 的解析度外,还能够有其他解析度的支持喔!但 ...
- javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
javascript获取iframe框架中,加载的页面document对象 因为浏览器安全限制,对跨域访问的页面,其document对象无法读取.设置属性 function getDocument(i ...