2012-12-30 2 views
1

iPhone에서 응용 프로그램의 비틀기를 작성하려고합니다. 나는 객관적인 C와 iPhone dev에 좋은 배경을 가지고 있지만, rpetrich의 덤프 된 헤더를 사용하여 몇 가지 튜토리얼을 저장하지 않고 Cydia 탈옥을 한 번도 해본 적이 없다. 나는 해독하기 위해 PoedCrackMod를 사용하고, 헤더를 얻기 위해 클래스 덤프 -z를 사용하고, 깨진 앱을 패치하기 위해 theos/로고를 사용하려고합니다.Theod가있는 Cydia Tweak을 만들 때 덤프 된 헤더로 컴파일러 오류가 발생했습니다.

나는 앱을 해독하기 위해 PoedCrackMod를 실행했다. 이렇게하면 .ipa 파일이 생성되어 실제 응용 프로그램 바이너리가 들어있는 .app 파일을 추출 할 수 있습니다.

I보다 먼저 가서 헤더 파일의 디렉토리를 얻을 수

class-dump-z -k -k -H -g -o ~/dumped_headers/ Foo 

를 사용할 수 있습니다. 이 헤더를 $ THEOS/include/Foo에 복사합니다. (여기에 -g 옵션 [내보내기 된 클래스 만 표시]를 사용해야합니까, 아니면 내보낼 수없는 클래스도 연결해야합니까?)

이 시점에서 나는 보이는 tweak.xm 파일을 생성 할 수 있어야합니다. 이 같은 :

#import <Foo/Foo.h> 

및 참조 메이크 파일은 다음과 같습니다

include theos/makefiles/common.mk 

TWEAK_NAME = FooTweak 
FooTweak_FILES = Tweak.xm 

include $(THEOS_MAKE_PATH)/tweak.mk 

내가 가서 (이 시점에서 아무것도 할 수 없을 것) 내 비틀기를 컴파일하려고, 내가 가지고 올 모든 종류의 중복 된 선언 오류. 이게 정상인가, 아니면 내가 뭔가 잘못하고있는 것인가?

정상적인 경우 어떻게 수정합니까? 중복 선언을 주석 처리하려고 시도했는데,이 경우 컴파일 할 수 있습니다. 메서드를 호출 할 때 UIAlertViews를 만드는 20 개 이상의 후크를 삽입했지만 그 중 아무 것도 호출하지 않는 메서드를 연결하지 않는다고 믿을 수는 없지만 그 중 하나는 헤더를 덤핑하거나 헤더를 내 트윅에 가져 오는 실수?

내가 뭘 잘못하고 있는지에 대한 통찰력이있는 사람이 있습니까?

답변

1

#import <Foo/Foo.h>

대신

사용하지 마십시오

[파일] tweak.xm :

#import <substrate.h> 

@interface FooToBeHookedHeader : NSObject {} // We take NSObject here as to avoid any errors. 
- (void)fooMethod1; // Only put the methods you are hooking 
- (void)fooInheritedMethod; // Inherited method (if hooking) as we are using NSObject up there :) 
@end 

%hook FooToBeHookedHeader 
- (void)fooMethod1 { 
// Do hooking stuff 
} 
- (void)fooInheritedMethod { 
// Do hooking stuff 
} 
%end 

// Include any instance variables which you are modifying if any :) 
// ~ SuperDev 

은 또한 당신의 FooTweak.plist

에 중독되는 앱/프레임 워크의 식별자를 포함
+0

이 방법이 효과적입니다. 나는 FooTweak.plist 파일을 편집하여 스프링 보드가 아닌 응용 프로그램의 번들 이름을 포함하는 한 가지 더 할 일이 필요했습니다. 이것이 기본값인지 또는 어떻게 든 다르게 변경 한 경우 확실하지 않습니다. –

+0

팅크를 만들 때 연결하려는 앱/프레임 워크의 식별자를 기록합니다. 특정 헤더가 연결되면 해당 특정 클래스를 사용하는 응용 프로그램/프레임 워크의 번들 식별자를 포함시킵니다. – s6luwJ0A3I