Apple 개발자 페이지에서 App ID 등록 및 Push 인증서 발급까지 끝낸 이 후.


0. 개발용 인증서 등록

잘 까먹는 과정 중 하나라서..

Push 서비스를 이용하려면 개발용 인증서 새로 발급해야 한다. 와일드카드 ㄴㄴ

발급 후 다운받을 수 있는 .mobileprovision 파일을 실행 후

프로젝트 Build Settings -> Code Signing Identity 에서 해당 인증서 선택


==========


1. .cer 파일을 실행해서 키체인에 등록

2. 키체인 - 인증서 카테고리 에서 인증서 찾아서 (앱아이디로 검색)


3. 왼쪽 접힌걸 열어서 인증서와 개인키를 같이 선택, 우클릭 -> 2개 항목 보내기

ㄴ 정확한건 아니지만, sandbox 용은 개인키와 함께, production 용은 인증서만 선택해서 추출해야 작동을 하는 것 같다.

원래 잘 되던게 언제부턴가 이러던데, 정확한 원인이나 이유는 잘 모르겠음.


4. .p12 포맷으로 적당한 곳에 저장. 비밀번호는 설정안해도 된다.

5. $ openssl pkcs12 -in cert.p12 -out cert.pem -nodes

6. 위에서 비밀번호를 지정했다면 해당 비밀번호를, 아니라면 그냥 엔터

7. 완성

%hook NSString

-(NSString *)stringWithString:(NSString *)str {

//....

%orig;

}

%end


THEOS 언어를 사용해봤다면, 메서드를 위와 같이 후킹해서 사용하게 된다.

근데 저건 탈옥해서 트윅을 사용할 때의 얘기이고,,,


맥용 앱을 제작할 때 메서드 후킹이 필요할 때가 있을 수 있다.

(iOS 에서는 확인 안해봤지만,, 안되겠지?)


일반적인 경우라면 새로운 클래스를 만들고 원래 클래스를 상속받아서 사용하면 되겠지만..




주저리주저리 하고 싶은 말이 많지만 생략하고, 오버라이딩(후킹)을 위해선 아래 함수를 사용하면 된다.

더보기 클릭!




사용방법은


1. 해당 클래스에 카테고리로 대체용 함수를 만든다.

2. MethodSwizzle 함수를 사용해 필요한 때에 바꿔준다.

3. 원래 메서드를 호출하고 싶다면, 카테고리로 만든 메서드를 호출해 주면 된다.


예시:


@interface NSString (Swizzle)

-(NSString *)alt_stringWithString:(NSString *)str;

@end


@implementation NSString (Swizzle)


-(NSString *)alt_stringWithString:(NSString *)str {

    //......

    

    return [self alt_stringWithString:str];

}


@end


...


-(void)somewhereInYourMind {

MethodSwizzle([NSString class], @selector(stringWithString:), @selector(alt_stringWithString:));


[NSString stringWithString:@""];

}


이렇게 하면 원래 메서드(여기선 stringWithString:) 를 호출하면

alt_stringWithString: 을 거친 다음 원래 메서드가 호출되고, 반환된다.



출처: http://cocoadev.com/MethodSwizzling

PPTP, L2TP는 공유기 설정에 따라 사용이 불가능하거나 일부러 막아놓은 경우도 있다.


이런 저런 불편함이 있어서 OpenVPN 이란게 있는데,

자세한 내막은 모르겠지만 이 녀석을 기본 내장하는 기기는 하나도 없음.

클라이언트 설정 파일 자체가 워낙 복잡해서 그런것 같기도 하다.


여튼,

안드로이드, iOS 도 원래 OpenVPN 이 사용이 불가했다.

루팅 혹은 탈옥을 하고난 후면 사용이 됬지만.


그러다 안드로이드는 4.0 부터인가? OpenVPN 일부를 서드파티 앱의 형태로 사용가능하게 되었고

iOS 도 언제부터인지 모르겠지만 서드파티 vpn plugin 을 제공하기 시작한 것 같다.


여튼 지금 글 쓰려는건 iOS 용 OpenVPN.

(뭐 그래봤자 딱히 쓸 내용도 없고 간략한 소개 정도..)





올해(2013년) 1월달에 나왔으며 iOS 5.0 이상을 지원한다.




(443 포트로 OpenVPN 을 열면 왠만한 차단은 다 뚫을 수 있단걸 내게 가르쳐준) Private Tunnel 사의 서비스는 기본으로 지원하고,

그 외엔 클라이언트 파일을 서버로 부터 받거나,

iTunes 로 넣거나, 메일로 받으면 된다고 설명하고 있다.


web, 메일 등에서의 외부 파일 연결은 zip 등 압축은 지원하지 않고 .ovpn 만 지원한다.

iTunes 로 넣을 경우 키 파일등을 따로 넣어도 ovpn 파일 내용을 토대로 알아서 가져오는데,

web에서 가져오거나 메일로 받을때는 어떻게 되는지 모르겠다.


나 같으면 key 들을 모두 .ovpn 에 쑤셔넣었다.



Web 으로 .ovpn 설정 파일을 받을때 OpenVPN 으로 연결이 안나오고

그냥 내용물이 출력된다면 더보기 클릭!



아이튠즈로 넣든, 메일로 받든, OpenVPN 앱에서 설정 파일을 추가할건지 묻고 추가하면 이제 사용가능!





연결 잘~된다 ㅎㅎ

443 포트와 같이 원래 서드파티 앱에서 사용불가능한 포트들도 사용가능!!






앱에서 사용한 설정이 설정 앱의 VPN 메뉴에서도 볼 수 있는데,

안타깝게도 다른 설정이나 연결은 안되고 각종 설정은 앱에서 하라는 메세지가 나온다.(심지어 여기서 삭제도 안됨)

연결 중일때 해제는 가능하다.


아이튠즈에서 설정파일을 넣고, 추가하고 나면 앱의 샌드박스 내 어디에도 설정 파일을 찾아볼 수 없는 것으로 보아

VPN 설정 추가시 설정, 키들을 iOS 키체인으로 집어 넣는 듯 하다.





참고로 OpenVPN 앱 내 말고, 설정 앱 안에 OpenVPN 설정 메뉴가 생기면서 다른 설정들도 가능하다.




탈옥을 하지 않고 순정에서도 할 수 있는 작업이 점점 늘어나는건 확실히 기분좋은 일인 것 같다~

개발자용 기기는 탈옥에 맞먹는 자율성을 부여해주면 좋을텐데...ㅠㅠ

(자세하게 알지 못하는 내용이며 틀린부분이 존재할 수 있음)


아이폰(아이팟, 아이패드 통틀어서 그냥 이렇게 부르도록 하자..)의 앱은 앱스토어로 부터 다운 받을수 있고,

앱스토어가 유일하다.(공식적인 방법으로는)

하지만 이 앱스토어는 애플의 심사를 통해 올라오게 되며 애플의 심사 기준에 적합하지 않은 앱들은 올라올 수 없다.

예를 들면 시스템에 접근하는 앱과 같은 것들...


그러다보니 자연스레 비공식 앱스토어가 생겨났다..

초기, 아이폰 3G도 나오기전, 난 아이팟터치 1세대를 봤다(형이 가지고 있었으니까.)

처음에는 앱스토어는 계획만 있었지 아이팟에 들어있지 않았다. 따라서 사람들은 기본앱만 사용할수 있었지만

그 당시에는 (언제나 애플이 그렇듯이) 그것만 해도 상당히 대단한 것이였다!

하여간 한글 키보드의 부재 등의 문제도 있었기에 많은 사람들의 jailbreak, 즉 탈옥을 하였는데 이때의 탈옥은

지금의 탈옥과는 달리 매우 어렵고 아이팟이 벽돌이 되는 일이 잦았다. 우리 형이 몇시간동안 시도하다가 포기한것을 기억한다.


쩃든 탈옥한후 깔게되는 그 당시 유일한 앱마켓인 installer

지금의 cydia와는 다르게 그 당시에는 이 마켓이 거의 유일(내가 알기로는)하였으므로 시스템 변조앱 뿐만 아니라 게임, 유틸 등도 여기에 다 올라왔다.


시간은 흘러흘러 iOS4 까지 나오게 되었다.(사실 그 사이의 일은 잘 모른다...;;ㅎㅎ)


그동안 앱스토어는 상당히 발전하였지만 아이폰과 애플의 정책은 상당히 폐쇄적이여서 사용자의 모든 요구에 다 부흥하지는 못하였다. 

그래서 생긴 비공식 앱마켓 Cydia(시디아).

앱스토어에서 거부당한 여러 앱들을 이곳에서는 받을 수 있다.(단, 아이폰에 탈옥이 먼저 수행되어야 하긴 하지만..)

언제부터인가 cydia에서도 결제를 통해 앱을 받는 방법이 생겨났고 cydia도 하나의 큰 앱마켓이 되어가고 있는것 같다.


이러한 cydia는 이제는 탈옥을 할때 기본으로 깔리는 프로그램이다. 원래 icy, rock 등등 몇가지 앱장터가 더 있었으나 사라지거나, cydia와 통합이 되는것 같다..


기본 아이폰만으로는 만족하지 못하는 나로써는, 탈옥없이는 아이폰을 제대로 사용하지 못한다..^^

또한 탈옥을 할경우 보안성이 순정에 비해 많이 뒤져진다는 사람들도 있는데 이러한 기기에 대해 잘 아는 사람이면

순정과 다름없는 보안성은 물론이고 오히려 그보다 더 뛰어난 보안을 가지게 될거라고 믿어 의심치 않는다.





* 그냥 재미삼아 써본 시디아앱의 작명 센스~(?)

예전에는 테마 변경 프로그램이 summerboard, 지금은 winterboard 인데 이 이름이 어디서 온것인지 아는가..?

아이폰 기본 앱인 springboard 에서 spring 을 봄으로 해석하여 작명한 앱들이다!!ㅋㅋ

재미없으면..죄송...ㅎㅎ

+ Recent posts