2012-03-09 2 views
4

나는 방법을 배우기 위해 노력하고 있습니다. 객관적인 C 언어로 프로그램을 만들었습니다. 이제 DYLD_INSERT_LIBRARIES를 사용하여 동적 라이브러리를로드하려고하므로 동적 라이브러리에 정의 된 새 메서드로 메서드 구현을 재정의 할 수 있습니다. 목표는 인수를 수정 한 다음 원래 함수 호출을 호출하는 것입니다.목표 C 방법 동적 라이브러리를 사용하여 스윕하기

프로그램 코드는 내가 "경우 (자기가 == [암호화 클래스]) {"즉시 라인으로 동적으로 실행됩니다 관찰 한 내용을 http://pastebin.com/Ndf6VdUt

에서 http://pastebin.com/a0b3qkgB 동적 라이브러리의 코드를 사용할 수 에서 확인할 수있다 라이브러리, 코드는 클래스 이름을 표시하고 이상한 메시지를 침을 뱉습니다. 전체 출력 :

Test-IPhone:~ root# DYLD_INSERT_LIBRARIES="./evil7.dylib" ./new 
objc[324]: Class Encryption is implemented in both /private/var/root/evil7.dylib and /private/var/root/./new. One of the two will be used. Which one is undefined. 
Inside load function 
objc[324]: Encryption: 
Trace/BPT trap 

코드에 어떤 문제가 있는지 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

목표는 동적 라이브러리 (코드 삽입)를 사용하여 객관적인 C 방법을 대체하는 것입니다.

+3

'암호화'라는 클래스가 있고 '암호화'라는 클래스가 포함 된 dylib를로드하려고합니다. 이름이 같은 두 개의 클래스를 가질 수 없습니다. – hooleyhoop

답변

1

두 클래스가 모두 같은 이름이기 때문입니다. 하나의 이름을 EncryptionDylib 또는 유사한 이름으로 변경하십시오.

ObjC 메소드는 대문자가 아닌 소문자로 시작해야합니다 (예 : -Encrypt :는 -encrypt :).