Finder 숨김파일 보기
defaults write com.apple.Finder AppleShowAllFiles YES

pwd : 현재 경로 출력
cd : 경로 변경
ls : 티렉토리, 파일 보기
- F:기호로 구분 | a:all | d:디렉토리만 | l:자세한 정보

cp - [원본] [복사] 파일 복사
 - r:하위내용까지 복사 | f:강제 복사 | i:중복검사
mv - [원] [이] 이동,이름변경
 - f:강제이동
rm - [파일] :삭제
 - r:하위내용까지 | f:강제삭제
 = rm -rf * : 현재 폴더 내용 다 삭제
mkdir
 - p:하위디렉토리까지(mkdir -p ./1/2)
rmdir 디렉토리 삭제


tar
-c creat
-f 파일
-v verbose (상황감시)
-z gzip
-x extract
tar -cvfz [디렉토리명] 압축  (예)  tar -cvfz backup.tar test : test 디렉토리를 backup.tar로 압축
tar -xvfz [압축파일명] 압축 해제   (예) $tar -xvfz test.tar  : test 디렉토리 압축 해제



명령어 --help  :  도움말

+ 경로 입력시 터미널위로 폴더/파일을 드래그.드랍으로 떨어뜨리면 커서가 있는부분에 경로가 자동 입력된다.
 아이폰 3GS 배터리 용량 : 1218mAh
아이폰 4 배터리 용량 : 1418mAh

아이폰을 분해한 후 배터리에 적혀 있는 정보를 바탕으로 계산한 것이라고 함..

출처 : http://purpleguy.blog.me/90096266387

iOS open project 이니 뭐니도 나온 상황이고, THEOS 가 훨씬 쓰기 편하다...

아래는 XCode4 나오면서 안되므로 무시하시길.
사실 저거 쓰면서 나도 뭐가 뭔지 몰라서 그냥 복,붙에 불과하다..ㅋㅋ



///////////////////////////////////////////////////////////////////////////////////////////////////

참고 싸이트

modmyi.com http://modmyi.com/forums/iphone-ipod-touch-sdk-development-discussion/728944-tutorial-how-compile-mobile-substrate-extension-xcode.html )

devbug.me http://devbug.me/606?category=2 )



1. XcodeSubstrate.zip 을 받는다. 주소 : http://cl.ly/9b3963d250f4673ccf51

(직접 헤더를 덤프하여 사용하려면 상단 modmyi 의 링크로 따라가서 Ok here we go 하위에 있는 XcodeSubstrateNoHeaders.zip 을 받는다)


그리고 압축풀고 나온 Mobile Substrate Extension 폴더는

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application

하위에 집어 넣는다.

템플릿이 4.0 기반이라 XCode에서 프로젝트 생성시 4.0으로 생성된다. 프로젝트 설정에서 바꿔주도록 하자.

버젼 문제는 아래에서 추가 설명


2. class-dump 를 이용하여 springboard 의 헤더파일을 가져온다.

class-dump-3.3.3.dmg (맥용) / apt-get install class-dump (아이폰)


맥-터미널 :

class-dump -H /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/CoreServices/SpringBoard.app/SpringBoard -o ~/Desktop/SpringBoard/

(맥에서 파일,폴더를 드래그 하여 터미널 위로 드랍시킬 경우 커서가 위치한 곳에 파일/폴더의 경로를 뿌려준다.

또한 class-dump 를 설치하고 싶지 않은 사람은 디스크 마운트 상태에서 class-dump를 복사하지 않고 사용이 가능하다.

ex> /Volumes/class-dump-3.3.3/class-dump  -H ~~~

뭐 편한대로 사용하도록 하자.


아이폰-터미널 : class-dump -H /System/Library/CoreServices/SpringBoard.app/SpringBoard -o ~/SpringBoard/

(아이폰에서 ssh를 깔아놓고 맥에서 터미널로 접근해서 하는 것을 추천한다.

이 글에서는 컴퓨터에서 추출한 헤더 파일을 사용하므로 일단 방법만을 적어놨을 뿐이고 실제 진행시에는 컴퓨터에서 추출하도록 하자.)


폴더이름은 SpringBoard 그대로 하도록! 뒤에 가서 헷갈린다... 오류 날경우 폴더를 만들어 놓고 실행!

그리고 폴더 채로 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/include/

하위로 이동하도록 한다


또한 Springboard/SpringBoard.h 파일을 열어서

7번째 줄의
#import "UIApplication.h"

#import "UIKit/UIApplication.h"
로 수정,

54번째 줄의
struct _opaque_pthread_t {
    long _field1;
    struct __darwin_pthread_handler_rec *_field2;
    char _field3[596];
} *_backgroundMIGServerThread;

을 주석 처리 한다.

devbug님이 게시한 방법이며, 이외에도 해줄곳이 많다고 한다. 일단 여기까지-

아이폰에서 class-dump를 했을 경우 파일이 위와 같지 않다. 나도 이런면을 잘아는게 아니라

그냥 다른글을 옮길 뿐이니 그냥 가르쳐주는대로 하도록 하자..ㅠㅠ


3. 1에서 압축을 풀었던 폴더 내에 있는 substrate.h 파일을 2에서 이동한 ~~/include/ 하위로 옮긴다.

SpringBoard 하위로 옮기지 않도록 유의하자.

noheader 버젼을 받은 사람이라면 이 파일이 없을 것이다. 아이폰에서 /Library/Frameworks/CydiaSubstrate.framework/Headers/CydiaSubstrate.h

경로의 파일을 이름을 바꿔서 집어 놓도록 하자.


4. 압축을 푼 폴더 내에 혹은 아이폰 내부(/usr/lib/libsubstrate.dylib) 에 있는 libsubstrate.dylib

/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/ 로 이동한다


이후 Xcode에 가면 새 프로젝트 선택시 MobileSubstrate Extension 이 나타난다.


빌드 시 device모드로 놓고 build and run 이 아닌 그냥 build를 하도록 하자.

개발자 등록을 하지 않았거나 xcode에 code sign 작업을 해놓지 않았을 경우 에러가 뜨게 된다.


빌드 후 프로젝트 폴더 내의 Release-iphoneos / Debug-iphoneos 폴더 아래에 있는 .app 파일을 패키지 보기로 연후

프로젝트 이름의 확장자 없는 실행 화일만 빼내어 .dylib 확장자를 붙인다.

이후 아이폰의 /Library/MobileSubstrate/DynamicLibraries/ 경로에 집어넣고 리스프링 하면 확인할 수 있다.



아래는 modmyi 에서 알려주는 SDK가 4.0 이 아닐경우의 프로젝트 설정이다.

어차피 xcode가 영어니까 그냥 그대로 복사해 오도록 하겠다..

--------------------------

  1. In the menu bar, click Project > Edit Project Settings
  2. Click the "Build" tab at the top
  3. Drop down the Configuration box and change it to Debug
  4. Change the Base SDK to iPhone Device 4.0
  5. Drop down the Configuration box and change it to Release
  6. Change the Base SDK to iPhone Device 4.0
  7. Close the window
  8. Expand the Frameworks folder in the sidebar to reveal the red Foundation and UIKit frameworks, then delete them both
  9. Control-click the Frameworks folder > Add > Existing Frameworks...
  10. Choose Foundation and UIKit from the list
--------------------------
다른 SDK의 경우 특히 8~10 작업을 해주지 않을 경우 컴파일 오류가 날것이다..(아마..)
modmyi에서는 4.0 이 아닌곳에서 쓰는것을 주의하라고는 하지만.. 그냥 무시하자.. 그렇다고 4.1 / 4.2.1 용이 있는것도 아닌것 같다..






가장 좋은건 그냥 modmyi 가서 원문을 읽어보자.. devbug님이 소개한 class-dump 관련한 내용을 제하고는 모두 들어있다.


'개발개발 > Mac, iOS' 카테고리의 다른 글

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
DEBIAN PACKAGING (deb) 만들기 (수정)  (1) 2011.01.30
PreferenceLoader 사용법  (0) 2011.01.30
cydia 앱, MobileSubstrate  (0) 2011.01.07

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


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

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

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

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


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

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

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

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

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

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


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

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


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


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

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

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

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


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


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

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

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





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

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

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

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

간혹 탈옥을 하는 사람들을 모두 크랙(과자, 돈 주고 구매한 앱을 무료로 이용하는것)을 위한것으로 보고 무조건 욕하는 사람들도 있다.

하지만 cydia에서는 기본적으로 크랙앱을 받을 수 없다.(유료 시디아앱 크랙을 시디아에서 받을수 있긴 하지만..)


탈옥의 목적은 여러가지가 있을 수 있다.

기본 전화/문자 앱등이 불편해서 좀더 나은 예를 들면 biteSMS같은 프로그램을 사용하기 위해 탈옥하는 사람도 있을것이고 자기 만의 개성있는 아이폰을 꾸미기 위해(테마) 탈옥하는 사람들도 있을것이다. 또한 다른 국가에서 아이폰을 구매한 사람들은 구매한 국가가 아닌 곳에서 아이폰을 사용하기 위해 컨트리 락을 언락 하기위해 탈옥을 하는 사람도 있으며 사람들이 욕을 하는 크랙 앱을 받기 위해 탈옥하는 사람들도 있을 것이다. 뭐.. 아이폰 내에서 디버깅 등을 하려는 개발자도 포함될수 있겠고..


앱스토어의 크랙앱은 cydia에서 비공식 소스를 추가하여 받을수 있는 installous앱을 통해 설치 할수 있다. 하지만 이것은 일단 명백한 불법이고 자신의 아이폰을 위험하게 만드는 통로를 열게 되는 것일수도 있다.

크랙 작업을 하는 사람, 해커라고 가정하면, 이 임의로 크랙앱에 다른 소스를 추가하여 해당 크랙앱을 설치한 사람에게 해를 가할수도 있는 것이다.


개발자의 노고를 위해서도 필요없고 법을 지키기 위해서도 필요없다. 나의 안전한 아이폰을 위해 크랙앱 사용은 자제하도록 하자..


하여간 내가 말하고 싶은 것은 탈옥을 햇다고 해서 모두 나쁜것은 아니라는 것이다.

단지 내가 가진 기기를 좀더 나에게 맞추고 편리하게 사용하기 위하여 조금의 변조를 가한것일 뿐이지..


애플에서는 탈옥이 명백한 불법이라고 하지만 난 절대로 그렇게 생각하지 않는다.

탈옥은 합법이며 iOS사용자의 자유인 것이다.

단, 크랙 어플을 사용하지 않을 경우에만.



--이젠 모조리 다 돈주고 사니까 이부분은 삭제 ㅋ--


ps.참고로 딴건 모르겠고 국내법상 탈옥툴 제작, 트윅 제작 등은 모두 법에 걸릴 수 있다.

아니 정확히 말하면 제작까진 괜찮지만 그걸 배포한다거나.. 이러면 문제가 생기지.

탈옥을 하고 activator 등 트윅들을 설치할 경우 함께 설치 되는것이

MobileSubstrate.


MobileSubstrate 를 이용하는 트윅들을 mobile substrate extension 이라고도 하는 것 같은데 그냥 간단히

트위(Tweak) 이라 하자..ㅋ


MobileSubstrate 는 iOS 기본 앱인 SpringBoard 를 비롯하여 각종 앱, 프레임 워크를 손쉽게 후킹할 수 있게 해준다.


주로 트윅들의 후킹 대상은 SpringBoard 가 되는데 일반적으로는 애플이 제작후 배포되는 SpringBoard 라서 사용중 큰 문제가 없다. 하지만 MobileSubstrate 를 통해 후킹을 할 경우 다른 개발자의 임의의 코드가 들어가면서 SpringBoard 에 에러가 생길 수 있고, 이 에러가 치명적일 경우 사용자가 폰을 사용하기 곤란해 질 것이다.

이를 대비해서 만들어진 것이 Safe Mode. 이 경우, 모든 MobileSubstrate Extension 들은 비활성화 된다.


Tweak 들을 비활성화 하려면 SBSettings 의 More 메뉴에 있는 MobileSubstrate addons 메뉴를 이용하거나

ifile 등을 이용하여 아이폰 내부 /Library/MobileSubstrate/DynamicLibraries/ 폴더에 있는 dylib파일의 확장자를 바꾸면 된다.

'개발개발 > Mac, iOS' 카테고리의 다른 글

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
DEBIAN PACKAGING (deb) 만들기 (수정)  (1) 2011.01.30
PreferenceLoader 사용법  (0) 2011.01.30
MobileSubstrate Extension with XCode  (0) 2011.01.07
원래 이런거 하면 금방 접어버리는데;;

일단 시도!!ㅎㅎ

초대장 받으려는데 좀 힘들어서 군대간 형 계정으로 접속해서 보내 버렸다;;

나중에 사실을 고하고 용서받아야지...ㅎㅎ


EtoiLe : 불어로 별 이라는 뜻

+ Recent posts