首页 > RE > 逆向工程之攻防<1> – – 空气质量指数

逆向工程之攻防<1> – – 空气质量指数

  学习了逆向工程有一段时间了,一直想跃跃欲试,找个APP玩玩。今天阳光明媚,没有昨天污染指数400多的雾霾了,看了看我天天用的“空气质量指数”的APP,就先拿他做实验吧。天天看他,就是下面的广告挺烦人的,就尝试把他去掉吧。

  1.打开那个软件,先用 Reveal 查看下广告显示的位置层次。
截图
  2.用dumpdecrypted.dylib先把他加密的壳给砸开,下载到Mac上面,用class-dump把.h文件提取出来,因为里面包含着两套代码,所以导出的时候,需要加上arch的参数

class-dump --arch armv7 -H DirtyBeijing.decrypted -o DirtyBeijing.h

  3.用SSH登录上去,ssh root@192.168.X.XXX,用ps ax 查看下运行的PID,然后用cycript进入:

iPhone:~ root# cycript -p 594
cy# var root = [[[UIApplication sharedApplication] keyWindow] rootViewController]
#"<DBiPhoneAppViewController: 0x14d15fb0>"
cy# var layoutView = [root.view subviews][1]
#"<UILayoutContainerView: 0x14db02b0; frame = (0 0; 320 529); layer = <CALayer: 0x14db0330>>"
cy# var containerView = [[[layoutView subviews][0] subviews][0] subviews][0]
#"<UILayoutContainerView: 0x14e2f3f0; frame = (0 0; 320 529); autoresize = W+H; gestureRecognizers = <NSArray: 0x14e5d6e0>; layer = <CALayer: 0x14e4ab50>>"
cy# var warper = [[[containerView subviews][0] subviews][0] subviews][0]
#"<UICollectionViewControllerWrapperView: 0x14db15a0; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x14db16d0>>"
cy# var adview = warper.subviews[2]
#"<UIView: 0x14dc04a0; frame = (0 430; 320 50); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x14dc0500>>"
cy# adview.hidden = YES
true

  哈哈,那个广告条不见了。在看看头文件里面有一个DBAdViewController的单例类,猜测一下他就是管广告的,用cycript验证一下,还真是。
  至此,结合Reveal 和导出的头文件、还有cycript 的调试信息,能很清楚的看出来这个简单的APP的整个页面布局。接下来就是写Tweak的时间了。

后记:

  里面用的pod工具管理,发现有几个pod还是自己以前没有见过的,觉得挺不错的,就在此记下。也是另一种学习吧!莫非反汇编就是传说中的吸星大法(*^_^*)!
CXAlertView 一个相当不错的AlertView,比系统的好用很多。
OMGHTTPURLRQ 一个对当前iOS框架NSRequest的扩展。
PromiseKit 异步编程模块,挺强大的。
RWBarChartView 一个滚动的高亮的图表。
RWBlurPopover 从上面弹出一个模糊层的弹框
TSMessages 定制的弹出框,从上面弹出的。

  1. 还没有评论
评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks