Я пытаюсь создать динамический каркасный проект, который я могу использовать для внедрения кода и для целей обратного инжиниринга.
Мне удалось внедрить код с использованием файла Objective C "(.m)"файл.
#import <Foundation/Foundation.h>
#import "CodeInjection-Swift.h" // This line gives error.
@interface CodeInjection: NSObject
@end
@implementation CodeInjection
static void __attribute__((constructor)) initialize(void){
NSLog(@"==== Code Injection in Action lolz====");
[[CodeInjectionSwift shared] performTask];
}
@end
У меня также есть файл с именем "CodeInjectionSwift.swift"
import Foundation
import NetworkInterceptor
@objc class CodeInjectionSwift: NSObject {
@objc public static let shared = CodeInjectionSwift()
override private init(){}
@objc func performTask(){
let requestSniffers: [RequestSniffer] = [
RequestSniffer(requestEvaluator: AnyHttpRequestEvaluator(), handlers: [
SniffableRequestHandlerRegistrable.console(logginMode: .nslog).requestHandler()
])
]
let requestRedirectors: [RequestRedirector] = [
RequestRedirector(requestEvaluator: DomainHttpRequestEvaluator(domain: "www.antennahouse.com"), redirectableRequestHandler: AlternateUrlRequestRedirector(url: URL(string: "https://www.rhodeshouse.ox.ac.uk/media/1002/sample-pdf-file.pdf")!))
]
let networkConfig = NetworkInterceptorConfig(requestSniffers: requestSniffers,
requestRedirectors: requestRedirectors)
NetworkInterceptor.shared.setup(config: networkConfig)
NetworkInterceptor.shared.startRecording()
}
}
Если я избавлюсь от #import "CodeInjection-Swift.h"
и строки [[CodeInjectionSwift shared] performTask];
NSLog печатает и может успешно строить. Мне сказали, что я должен импортировать файл -Swift.h, чтобы использовать классы swift в CondeInjection-swift.h
Сообщение об ошибке
"- Swift.h не найден"
Моя цель - создать среду и использовать функциональность CodeInjectionSwift, которая использует import NetworkInterceptor