原文:http://www.phonesdevelopers.com/1781016/

The surgery class named PluginWidgetIOS use lldb can get:

  1. (lldb) image lookup -r -s PluginWidgetIOS  
  2. 7 symbols match the regular expression 'PluginWidgetIOS' in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/PrivateFrameworks/WebKit.framework/WebKit:  
  3.         Address: WebKit[0x0003a5a0] (WebKit.TEXT.text + 231680)  
  4.         Summary: WebKitPluginWidgetIOS::~PluginWidgetIOS()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address:&nbsp;WebKit[0x0003a5b0]&nbsp;(WebKit.__TEXT.__text&nbsp;+&nbsp;231696)&nbsp;&nbsp;</span>
    </li>
    <li class="alt" style="border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;" data-iceapw="8" data-iceapc="1">
    <span style="margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;" data-iceapw="8">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Summary:&nbsp;WebKit
    PluginWidgetIOS::~PluginWidgetIOS()        Address: WebKit[0x0003a6f0] (WebKit.TEXT.text + 232016)  
  5.         Summary: WebKitPluginWidgetIOS::platformLayer()&nbsp;const&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address:&nbsp;WebKit[0x0003a750]&nbsp;(WebKit.__TEXT.__text&nbsp;+&nbsp;232112)&nbsp;&nbsp;</span>
    </li>
    <li class="alt" style="border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;" data-iceapw="9" data-iceapc="1">
    <span style="margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;" data-iceapw="9">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Summary:&nbsp;WebKit
    PluginWidgetIOS::willProvidePluginLayer() const        Address: WebKit[0x0003a7b0] (WebKit.TEXT.text + 232208)  
  6.         Summary: WebKitPluginWidgetIOS::attachPluginLayer()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address:&nbsp;WebKit[0x0003a810]&nbsp;(WebKit.__TEXT.__text&nbsp;+&nbsp;232304)&nbsp;&nbsp;</span>
    </li>
    <li class="alt" style="border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;" data-iceapw="8" data-iceapc="1">
    <span style="margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;" data-iceapw="8">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Summary:&nbsp;WebKit
    PluginWidgetIOS::detachPluginLayer()        Address: WebKit[0x001335e0] (WebKit.DATA.data + 560)  
  7.         Summary: vtable for PluginWidgetIOS  

Useful information:

  1. Address: WebKit[0x001335e0] (WebKit.DATA.data + 560)  
  2.         Summary: vtable for PluginWidgetIOS  

IDA Open WebCore static library, goto (shortcuts g) vtable address where 0x1335e0, you can see:

  1. data:001335E0 ; `vtable for'PluginWidgetIOS  
  2. data:001335E0 ZTV15PluginWidgetIOS db    0          ; DATA XREF: nlsymbolptr:ZTV15PluginWidgetIOSptro  
  3. data:001335E1                 db    0  
  4. data:001335E2                 db    0  
  5. data:001335E3                 db    0  
  6. data:001335E4                 db    0  
  7. data:001335E5                 db    0  
  8. data:001335E6                 db    0  
  9. data:001335E7                 db    0  
  10. data:001335E8                 dd offset ZN15PluginWidgetIOSD1Ev ; PluginWidgetIOS::~PluginWidgetIOS()  
  11. data:001335EC                 dd offset ZN15PluginWidgetIOSD0Ev ; PluginWidgetIOS::~PluginWidgetIOS()  
  12. data:001335F0                 dd offset ZN7WebCore6Widget12setFrameRectERKNS7IntRectE ; WebCore::Widget::setFrameRect(WebCore::IntRect  const&)  
  13. data:001335F4                 dd offset ZN7WebCore6Widget5paintEPNS15GraphicsContextERKNS7IntRectE ; WebCore::Widget::paint(WebCore::GraphicsContext ,WebCore::IntRect  const&)  
  14. data:001335F8                 dd offset ZN12PluginWidget14invalidateRectERKN7WebCore7IntRectE ; PluginWidget::invalidateRect(WebCore::IntRect  const&)  
  15. data:001335FC                 dd offset ZN7WebCore6Widget8setFocusEb ; WebCore::Widget::setFocus(bool)  
  16. data:00133600                 dd offset ZN7WebCore6Widget4showEv ; WebCore::Widget::show(void)  
  17. data:00133604                 dd offset ZN7WebCore6Widget4hideEv ; WebCore::Widget::hide(void)  
  18. data:00133608                 dd offset ZN7WebCore6Widget16setParentVisibleEb ; WebCore::Widget::setParentVisible(bool)  
  19. data:0013360C                 dd offset ZNK7WebCore6Widget11isFrameViewEv ; WebCore::Widget::isFrameView(void)  
  20. data:00133610                 dd offset ZNK7WebCore6Widget12isPluginViewEv ; WebCore::Widget::isPluginView(void)  
  21. data:00133614                 dd offset ZNK7WebCore14PluginViewBase16isPluginViewBaseEv ; WebCore::PluginViewBase::isPluginViewBase(void)  
  22. data:00133618                 dd offset ZNK7WebCore6Widget11isScrollbarEv ; WebCore::Widget::isScrollbar(void)  
  23. data:0013361C                 dd offset ZN7WebCore6Widget9setParentEPNS_10ScrollViewE ; WebCore::Widget::setParent(WebCore::ScrollView )  
  24. data:00133620                 dd offset ZN7WebCore6Widget11handleEventEPNS5EventE ; WebCore::Widget::handleEvent(WebCore::Event *)  
  25. data:00133624                 dd offset ZN7WebCore6Widget12notifyWidgetENS18WidgetNotificationE ; WebCore::Widget::notifyWidget(WebCore::WidgetNotification)  
  26. data:00133628                 dd offset ZN7WebCore6Widget17frameRectsChangedEv ; WebCore::Widget::frameRectsChanged(void)  
  27. data:0013362C                 dd offset ZN7WebCore6Widget22widgetPositionsUpdatedEv ; WebCore::Widget::widgetPositionsUpdated(void)  
  28. data:00133630                 dd offset ZN7WebCore6Widget25transformsAffectFrameRectEv ; WebCore::Widget::transformsAffectFrameRect(void)  
  29. data:00133634                 dd offset ZNK7WebCore6Widget23convertToContainingViewERKNS7IntRectE ; WebCore::Widget::convertToContainingView(WebCore::IntRect  const&)  
  30. data:00133638                 dd offset ZNK7WebCore6Widget25convertFromContainingViewERKNS7IntRectE ; WebCore::Widget::convertFromContainingView(WebCore::IntRect  const&)  
  31. data:0013363C                 dd offset ZNK7WebCore6Widget23convertToContainingViewERKNS8IntPointE ; WebCore::Widget::convertToContainingView(WebCore::IntPoint  const&)  
  32. data:00133640                 dd offset ZNK7WebCore6Widget25convertFromContainingViewERKNS8IntPointE ; WebCore::Widget::convertFromContainingView(WebCore::IntPoint  const&)  
  33. data:00133644                 dd offset ZNK7WebCore6Widget13axObjectCacheEv ; WebCore::Widget::axObjectCache(void)  
  34. data:00133648                 dd offset ZNK15PluginWidgetIOS13platformLayerEv ; PluginWidgetIOS::platformLayer(void)  
  35. data:0013364C                 dd offset ZNK15PluginWidgetIOS22willProvidePluginLayerEv ; PluginWidgetIOS::willProvidePluginLayer(void)  
  36. data:00133650                 dd offset ZN15PluginWidgetIOS17attachPluginLayerEv ; PluginWidgetIOS::attachPluginLayer(void)  
  37. data:00133654                 dd offset ZN15PluginWidgetIOS17detachPluginLayerEv ; PluginWidgetIOS::detachPluginLayer(void)  
  38. data:00133658                 dd offset ZN7WebCore14PluginViewBase12scriptObjectEPN3JSC14JSGlobalObjectE ; WebCore::PluginViewBase::scriptObject(JSC::JSGlobalObject *)  
  39. data:0013365C                 dd offset ZN7WebCore14PluginViewBase27privateBrowsingStateChangedEb ; WebCore::PluginViewBase::privateBrowsingStateChanged(bool)  
  40. data:00133660                 dd offset ZN7WebCore14PluginViewBase12getFormValueERN3WTF6StringE ; WebCore::PluginViewBase::getFormValue(WTF::String &)  
  41. data:00133664                 dd offset ZN7WebCore14PluginViewBase6scrollENS15ScrollDirectionENS17ScrollGranularityE ; WebCore::PluginViewBase::scroll(WebCore::ScrollDirection,WebCore::ScrollGranularity)  
  42. data:00133668                 dd offset ZN7WebCore14PluginViewBase19horizontalScrollbarEv ; WebCore::PluginViewBase::horizontalScrollbar(void)  
  43. data:0013366C                 dd offset ZN7WebCore14PluginViewBase17verticalScrollbarEv ; WebCore::PluginViewBase::verticalScrollbar(void)  
  44. data:00133670                 dd offset ZN7WebCore14PluginViewBase16wantsWheelEventsEv ; WebCore::PluginViewBase::wantsWheelEvents(void)  
  45. __data:00133674                 align 10h  

This is virtual function table PluginWidgetIOS. You can see from the comment after the semicolon function directly perform address point to the Widget, PluginWidget, PluginViewBase the function can the know PluginWidgetIOS is their direct or indirect subclass.

Reuse of the lldb image lookup these three classes, you can see the inheritance chain:

PluginWidgetIOS-> PluginViewBase-> PluginWidget-> Widget

The because the virtual list PluginWidget does not appear PluginViewBase the the Widget virtual table does not appear PluginWidget and PluginViewBase. Of course, these three classes in the open source can find inheritance.

 

[转]Use the IDA and LLDB explore WebCore C + + class inheritance的更多相关文章

  1. 写给 iOS 开发者的 Hopper + lldb 简介

    最近,关于 @Steipete 在Radar发布的帖子,笔者看到很多人在问「你是怎么理解那个伪代码的」.笔者想写博客已经有一段时间了,现在正好就此发表第一篇博文.笔者在一个叫 Hopper 的工具上花 ...

  2. 容器中的诊断与分析3——live diagnosis——lldb

    windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg .net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分析呢?今天介 ...

  3. ida调试ios应用

    收集,整理http://www.cnblogs.com/fply/p/8488842.html 这个文章讲了ios上debugserver相关配置 http://iphonedevwiki.net/i ...

  4. iOS逆向工程之Hopper+LLDB调试第三方App

    LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...

  5. 逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等

    目录: 一. iOS 如何做才安全 二.ipa文件 三.沙盒 中的数据 四.Reveal:查看 任何APP 的UI结构 五.反编译工具:IDA 六.反编译工具:Hopper Disassembler ...

  6. LLDB基础知识

    LLDB基础知识 LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进 ...

  7. IDA的脚本IDC的一个简单使用

    目的:主要是想学习一下IDA的IDC的脚本的使用.这里做了一个小的测试. 这里使用的是VS2015Community来生成文件的. 一.编写测试程序: 这里先生成我们的目标数据. 然后编写测试程序.得 ...

  8. 安卓动态调试七种武器之孔雀翎 – Ida Pro

    安卓动态调试七种武器之孔雀翎 – Ida Pro 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是 ...

  9. iOS程序逆向Mac下常用工具——Reveal、HopperDisassemble、IDA

    原文在此 一.Reveal 1 一般使用     Reveal是ITTY BITTY发布的UI分析工具,可以很直观的查看App的UI布局.如下图所示:     Reveal是需要付费的,需要89美元, ...

随机推荐

  1. TableLayout中stretchColumns、shrinkColumns的使用方法

    android:stretchColumns="1" android:shrinkColumns="1"这两个属性是TableLayout所特有的,也是这两个属 ...

  2. crawler_爬虫代理方案

    爬虫往往会遇到各种限制ip问题 理方案(爬虫) IP代理软件 优势标记: 是 自动切换IP 基本无开发成本标记: 黄色, 考虑切换IP时 ,网络瞬时异常 IP池,由商家维护 劣势标记: 非 部署 每个 ...

  3. python_基础学习_02_拆分文件(spilt)

    做爬虫经常会有这样的引用场景 ,原始网页存储格式为  url+\t+ html php 有个explode的 拆分文本行方法,比较方便直接接收列值 list($url,$html)=explode(& ...

  4. java_Eclipse自动生成作者、日期注释等功能设置_导入 xml方式

    常规方式 随便百度个 类比 http://blog.sina.com.cn/s/blog_4080505a0101guoh.html 这里主要介绍配好后,导出,xml,迁移环境时 导入 comment ...

  5. vs2012 + web api + OData + EF + MYsql

    vs2012 + web api + OData + EF + MYsql 开发及部署 先说下我的情况,b/s开发这块已经很久没有搞了,什么web api .MVC.OData都只是听过,没有实际开发 ...

  6. 【百度地图API】小学生找哥哥——小学生没钱打车,所以此为公交查询功能

    原文:[百度地图API]小学生找哥哥--小学生没钱打车,所以此为公交查询功能 任务描述: 有位在魏公村附近上小学的小朋友,要去北京邮电大学找哥哥.他身上钱很少,只够坐公交的.所以,百度地图API快帮帮 ...

  7. dedeCMS中单独调用子栏目模板和子栏目的文章时修改源代码给channel和chanenartllist加上limit

    在网站文件中找到include-taglib-chanel.lib.php,和chaneartllist.lib.php 下载用php的IDE打开, chanel.php加入limit属性修改如下 & ...

  8. MapReduce 编程模型

    一.简单介绍 1.MapReduce 应用广泛的原因之中的一个在于它的易用性.它提供了一个因高度抽象化而变得异常简单的编程模型. 2.从MapReduce 自身的命名特点能够看出,MapReduce ...

  9. Errors occurred during the build. Errors running builder &#39;JavaScript Validator&#39; on

    eclipse又一次编译时候就会报错Errors occurred during the build. Errors running builder 'JavaScript Validator' on ...

  10. Linux环境编程相关的文章

    Linux环境编程相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了.趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象. 因为不是写书,也受到许多外部因素限制 ...