如何调用一个框架内的函数

因为要写一个xcode插件 现在需要逆向一个功能
dump IDEKIT

找到需要函数的头文件

#import <IDEKit/IDEViewController.h>

#import "DVTEditor.h"
#import "DVTReplacementViewDelegate.h"
#import "DVTStatefulObject.h"
#import "DVTTabbedWindowTabContentControlling.h"
#import "IDEEditorAreaContainer.h"
#import "IDEStructureEditingWorkspaceTabContext.h"
#import "IDEWorkspaceDocumentProvider.h"
#import "NSTextViewDelegate.h"

@class DVTFilePath, DVTMutableOrderedSet, DVTNotificationToken, DVTObservingToken, DVTReplacementView, DVTSplitView, DVTSplitViewItem, IDEARCConversionAssistantContext, IDEAppChooserWindowController, IDEBuildAlertMonitor, IDEEditorArea, IDEExecutionHoldAlertHelper, IDELaunchSession, IDENavigatorArea, IDEObjCModernizationAssistantContext, IDERunAlertMonitor, IDESwiftMigrationAssistantContext, IDEUnitTestsModernizationAssistantContext, IDEWorkspace, IDEWorkspaceDocument, IDEWorkspaceWindowController, NSAlert, NSDocument<DVTTabbedWindowCreation>, NSMapTable, NSMutableArray, NSString;

@interface IDEWorkspaceTabController : IDEViewController <NSTextViewDelegate, DVTTabbedWindowTabContentControlling, DVTStatefulObject, DVTReplacementViewDelegate, IDEEditorAreaContainer, IDEStructureEditingWorkspaceTabContext, IDEWorkspaceDocumentProvider, DVTEditor>
{
         DVTSplitView *_designAreaSplitView;
        DVTReplacementView *_navReplacementView;
    DVTSplitView *_utilityAreaSplitView;
    DVTSplitViewItem *_navigatorAreaSplitViewItem;
    DVTSplitViewItem *_utilitiesAreaSplitViewItem;
    DVTReplacementView *_inspectorReplacementView;
    DVTReplacementView *_libraryReplacementView;
    DVTMutableOrderedSet *_cursorRectInterceptors;
    NSMapTable *_additionControllersForLaunchSessionTable;
    NSMutableArray *_debuggingUIControllerLifeCycleObservers;
    NSString *_userDefinedTabLabel;
    NSString *_lastValidUserDefinedName;
    NSMapTable *_notificationTokenForLaunchSessionTable;
    NSMapTable *_observerTokenForLaunchSessionsDebuggingAdditionsTable;
}

+ (unsigned long long)assertionBehaviorForKeyValueObservationsAtEndOfEvent;
+ (BOOL)automaticallyNotifiesObserversOfSavedTabFilePath;
+ (BOOL)automaticallyNotifiesObserversOfSavedTabLabel;
+ (void)configureStateSavingObjectPersistenceByName:(id)arg1;

- (void)cleanActiveRunContext:(id)arg1;
- (void)viewDidInstall;
- (void)viewMemory:(id)arg1;
- (void)viewWillUninstall;
@property(readonly) IDEWorkspaceWindowController *windowController;
- (id)workspace;
- (void)workspaceWindowIsClosing;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;

@end

里面的cleanActiveRunContext就是我所需要的函数 参数我可以拿到 但是这个framework内的未公开含漱 我应该怎么在我的代码里调用?

如果知道的话 告知下 谢谢~

objc_getClass
dlsym

这种方法拿不到哦

我个人诚恳的建议您(以及贵司)
先学习一下Linux/UNIX基础,以及Objective-C基础

这还是个instance method,回去从基础开始重学吧
dlopen/dlsym是给调用C函数用的

dlsym的第一个参数是dlopen返回的handle.这部分可以搜索 “iOS ptrace”

OC用objc_getClass 以及performselector

cleanactive是个实例方法,从你的头文件来看,所以你需要找到那个实例。

看你这部分代码应该是几维盾牌的app加固工具?
是的话贵司还招人吗,能独立折腾整套加固工具链的那种?
----------------补充思路-------------
你可以看下这个类以及父类的交叉调用,hook生成对象的地方,用一个全局变量保存指向这个对象的指针,然后再对着这个指针performselector:@selector(XXXXX)

然后看到你另一帖里要推荐iOS开发的正向书籍?

语言没有问题的话试试看O’Reilly

直接放个假的头文件。类似《iOS应用逆向工程》中的tweak的头文件声明。

你可以参考我这个插件:

https://github.com/everettjf/XBookmark

群里:expressionless:

哦……没注意群里的信息……

多谢已解决