[转]Use the IDA and LLDB explore WebCore C + + class inheritance
原文:http://www.phonesdevelopers.com/1781016/
The surgery class named PluginWidgetIOS use lldb can get:
- (lldb) image lookup -r -s PluginWidgetIOS
- 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:
- Address: WebKit[0x0003a5a0] (WebKit.TEXT.text + 231680)
- Summary: WebKit
PluginWidgetIOS::~PluginWidgetIOS() Address: WebKit[0x0003a5b0] (WebKit.__TEXT.__text + 231696) </span>PluginWidgetIOS::~PluginWidgetIOS() Address: WebKit[0x0003a6f0] (WebKit.TEXT.text + 232016)
</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"> Summary: WebKit - Summary: WebKit
PluginWidgetIOS::platformLayer() const Address: WebKit[0x0003a750] (WebKit.__TEXT.__text + 232112) </span>PluginWidgetIOS::willProvidePluginLayer() const Address: WebKit[0x0003a7b0] (WebKit.TEXT.text + 232208)
</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"> Summary: WebKit - Summary: WebKit
PluginWidgetIOS::attachPluginLayer() Address: WebKit[0x0003a810] (WebKit.__TEXT.__text + 232304) </span>PluginWidgetIOS::detachPluginLayer() Address: WebKit[0x001335e0] (WebKit.DATA.data + 560)
</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"> Summary: WebKit - Summary: vtable for PluginWidgetIOS
Useful information:
- Address: WebKit[0x001335e0] (WebKit.DATA.data + 560)
- Summary: vtable for PluginWidgetIOS
IDA Open WebCore static library, goto (shortcuts g) vtable address where 0x1335e0, you can see:
- data:001335E0 ; `vtable for'PluginWidgetIOS
- data:001335E0 ZTV15PluginWidgetIOS db 0 ; DATA XREF: nlsymbolptr:ZTV15PluginWidgetIOSptro
- data:001335E1 db 0
- data:001335E2 db 0
- data:001335E3 db 0
- data:001335E4 db 0
- data:001335E5 db 0
- data:001335E6 db 0
- data:001335E7 db 0
- data:001335E8 dd offset ZN15PluginWidgetIOSD1Ev ; PluginWidgetIOS::~PluginWidgetIOS()
- data:001335EC dd offset ZN15PluginWidgetIOSD0Ev ; PluginWidgetIOS::~PluginWidgetIOS()
- data:001335F0 dd offset ZN7WebCore6Widget12setFrameRectERKNS7IntRectE ; WebCore::Widget::setFrameRect(WebCore::IntRect const&)
- data:001335F4 dd offset ZN7WebCore6Widget5paintEPNS15GraphicsContextERKNS7IntRectE ; WebCore::Widget::paint(WebCore::GraphicsContext ,WebCore::IntRect const&)
- data:001335F8 dd offset ZN12PluginWidget14invalidateRectERKN7WebCore7IntRectE ; PluginWidget::invalidateRect(WebCore::IntRect const&)
- data:001335FC dd offset ZN7WebCore6Widget8setFocusEb ; WebCore::Widget::setFocus(bool)
- data:00133600 dd offset ZN7WebCore6Widget4showEv ; WebCore::Widget::show(void)
- data:00133604 dd offset ZN7WebCore6Widget4hideEv ; WebCore::Widget::hide(void)
- data:00133608 dd offset ZN7WebCore6Widget16setParentVisibleEb ; WebCore::Widget::setParentVisible(bool)
- data:0013360C dd offset ZNK7WebCore6Widget11isFrameViewEv ; WebCore::Widget::isFrameView(void)
- data:00133610 dd offset ZNK7WebCore6Widget12isPluginViewEv ; WebCore::Widget::isPluginView(void)
- data:00133614 dd offset ZNK7WebCore14PluginViewBase16isPluginViewBaseEv ; WebCore::PluginViewBase::isPluginViewBase(void)
- data:00133618 dd offset ZNK7WebCore6Widget11isScrollbarEv ; WebCore::Widget::isScrollbar(void)
- data:0013361C dd offset ZN7WebCore6Widget9setParentEPNS_10ScrollViewE ; WebCore::Widget::setParent(WebCore::ScrollView )
- data:00133620 dd offset ZN7WebCore6Widget11handleEventEPNS5EventE ; WebCore::Widget::handleEvent(WebCore::Event *)
- data:00133624 dd offset ZN7WebCore6Widget12notifyWidgetENS18WidgetNotificationE ; WebCore::Widget::notifyWidget(WebCore::WidgetNotification)
- data:00133628 dd offset ZN7WebCore6Widget17frameRectsChangedEv ; WebCore::Widget::frameRectsChanged(void)
- data:0013362C dd offset ZN7WebCore6Widget22widgetPositionsUpdatedEv ; WebCore::Widget::widgetPositionsUpdated(void)
- data:00133630 dd offset ZN7WebCore6Widget25transformsAffectFrameRectEv ; WebCore::Widget::transformsAffectFrameRect(void)
- data:00133634 dd offset ZNK7WebCore6Widget23convertToContainingViewERKNS7IntRectE ; WebCore::Widget::convertToContainingView(WebCore::IntRect const&)
- data:00133638 dd offset ZNK7WebCore6Widget25convertFromContainingViewERKNS7IntRectE ; WebCore::Widget::convertFromContainingView(WebCore::IntRect const&)
- data:0013363C dd offset ZNK7WebCore6Widget23convertToContainingViewERKNS8IntPointE ; WebCore::Widget::convertToContainingView(WebCore::IntPoint const&)
- data:00133640 dd offset ZNK7WebCore6Widget25convertFromContainingViewERKNS8IntPointE ; WebCore::Widget::convertFromContainingView(WebCore::IntPoint const&)
- data:00133644 dd offset ZNK7WebCore6Widget13axObjectCacheEv ; WebCore::Widget::axObjectCache(void)
- data:00133648 dd offset ZNK15PluginWidgetIOS13platformLayerEv ; PluginWidgetIOS::platformLayer(void)
- data:0013364C dd offset ZNK15PluginWidgetIOS22willProvidePluginLayerEv ; PluginWidgetIOS::willProvidePluginLayer(void)
- data:00133650 dd offset ZN15PluginWidgetIOS17attachPluginLayerEv ; PluginWidgetIOS::attachPluginLayer(void)
- data:00133654 dd offset ZN15PluginWidgetIOS17detachPluginLayerEv ; PluginWidgetIOS::detachPluginLayer(void)
- data:00133658 dd offset ZN7WebCore14PluginViewBase12scriptObjectEPN3JSC14JSGlobalObjectE ; WebCore::PluginViewBase::scriptObject(JSC::JSGlobalObject *)
- data:0013365C dd offset ZN7WebCore14PluginViewBase27privateBrowsingStateChangedEb ; WebCore::PluginViewBase::privateBrowsingStateChanged(bool)
- data:00133660 dd offset ZN7WebCore14PluginViewBase12getFormValueERN3WTF6StringE ; WebCore::PluginViewBase::getFormValue(WTF::String &)
- data:00133664 dd offset ZN7WebCore14PluginViewBase6scrollENS15ScrollDirectionENS17ScrollGranularityE ; WebCore::PluginViewBase::scroll(WebCore::ScrollDirection,WebCore::ScrollGranularity)
- data:00133668 dd offset ZN7WebCore14PluginViewBase19horizontalScrollbarEv ; WebCore::PluginViewBase::horizontalScrollbar(void)
- data:0013366C dd offset ZN7WebCore14PluginViewBase17verticalScrollbarEv ; WebCore::PluginViewBase::verticalScrollbar(void)
- data:00133670 dd offset ZN7WebCore14PluginViewBase16wantsWheelEventsEv ; WebCore::PluginViewBase::wantsWheelEvents(void)
- __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的更多相关文章
- 写给 iOS 开发者的 Hopper + lldb 简介
最近,关于 @Steipete 在Radar发布的帖子,笔者看到很多人在问「你是怎么理解那个伪代码的」.笔者想写博客已经有一段时间了,现在正好就此发表第一篇博文.笔者在一个叫 Hopper 的工具上花 ...
- 容器中的诊断与分析3——live diagnosis——lldb
windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg .net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分析呢?今天介 ...
- ida调试ios应用
收集,整理http://www.cnblogs.com/fply/p/8488842.html 这个文章讲了ios上debugserver相关配置 http://iphonedevwiki.net/i ...
- iOS逆向工程之Hopper+LLDB调试第三方App
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...
- 逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等
目录: 一. iOS 如何做才安全 二.ipa文件 三.沙盒 中的数据 四.Reveal:查看 任何APP 的UI结构 五.反编译工具:IDA 六.反编译工具:Hopper Disassembler ...
- LLDB基础知识
LLDB基础知识 LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进 ...
- IDA的脚本IDC的一个简单使用
目的:主要是想学习一下IDA的IDC的脚本的使用.这里做了一个小的测试. 这里使用的是VS2015Community来生成文件的. 一.编写测试程序: 这里先生成我们的目标数据. 然后编写测试程序.得 ...
- 安卓动态调试七种武器之孔雀翎 – Ida Pro
安卓动态调试七种武器之孔雀翎 – Ida Pro 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是 ...
- iOS程序逆向Mac下常用工具——Reveal、HopperDisassemble、IDA
原文在此 一.Reveal 1 一般使用 Reveal是ITTY BITTY发布的UI分析工具,可以很直观的查看App的UI布局.如下图所示: Reveal是需要付费的,需要89美元, ...
随机推荐
- MVC中的其他新特性
MVC中的其他新特性 (GlobalImport全局导入功能) 默认新建立的MVC程序中,在Views目录下,新增加了一个_GlobalImport.cshtml文件和_ViewStart.cshtm ...
- 采纳ajax提交POST样本数据
问题叙述性说明 我们会form该input和checkbox提交给异步数据phpserver.处理后的回. 提交之后显示的位置: 难点分析 採用from表单的onsubmit属性阻止表单的提交 < ...
- PeopleRank从社交网络中发现个体价值
阅读导读: 1.什么是PeopleRank? 2.PeopleRank和PageRank有什么差别? 3.PR分析微博数据时,怎样对微博单个账号评分? 4.R语言怎样递归计算矩阵特征值? 5.怎样计算 ...
- 【BZOJ3450】【Tyvj1952】Easy 可能DP
联系: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...
- 私人定制javascript中数组小知识点(Only For Me)
先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好, ...
- 用fildder 查看loveuv 刷流量时通信的数据
loveuv是一个用来刷网页流量的站点,以下介绍怎么查看它刷流量时数据的传输 首先是注冊页面,邀请码UBMNEY 注冊账号登陆后,在账户资料页面http://www.loveuv.com/user/m ...
- Group and sum array of hashes by date
I have an array of hashes like this: [{:created=>Fri, 22 Jan 2014 13:02:13 UTC +00:00, :amount=&g ...
- 【高德地图API】如何打造十月妈咪品牌地图?
原文:[高德地图API]如何打造十月妈咪品牌地图? 摘要:品牌地图除了地图,商铺标点外,还有微博关注,路线查询等功能. ---------------------------------------- ...
- UVa 11121 - Base -2
题目:计算以-2为基数的数的表示. 分析:数论.写出不同位数能表示的数字区间就能够找到规律. 长度为1:[1,1]: 长度为2:[-2,-1]: 长度为3:[2,5]: 观察发现,区间长度增长为1,2 ...
- Asp.net MVC + EF + Spring.Net 项目实践(目录)
用4篇博客来搭一个MVC的框架,可能对初学者会有一些帮助,大家共勉吧.我觉得对于中小型项目,这个框架可能还是有一定的用处的,希望能够帮助到一些人. Asp.net MVC + EF + Spring. ...