수정할 내용이 많아서 좀 많이 갈아엎었음.



If you are not Korean,

just read this

http://pastie.org/8372228


+

/var/mobile/Documents/com.apple.springboard.settings/RootSettings.plist

is just settings saved file.

so I think if find a way for enabling [ isInternalInstall], it will work without tweak.

but maybe, still need jailbreak.. :(


=================




6월 10일, iOS7 베타1 이 공개되고 8일 후인 6월 18일,

@hamzasood 란 사람이 iOS 내부를 건드려서 찾아냈다는 SpringBoard 내부 설정.

폴더 안 폴더, 애니메이션 속도 조절 등 다양한 옵션이 있으며 이를 동영상으로 찍어 보여주기까지 했다.

특이한 건 설정 앱 내에서가 아니라 볼륨 버튼으로 SpringBoard 위로 불러온다.


처음 사람들 반응은 긴가민가,

시뮬레이터라는 둥 뭐 이런저런 가정이 많이 나왔지만 그때마다 다양한 동영상으로 증명해 보였다.

며칠 후 트위터를 통해 어떻게 활성화하는지에 대해 알려줬으나 ( http://pastie.org/8067977 )

작동된다는 사람은 아무도 없다...

(관련 포스트들:

http://briansweet.me/blog/ios-7-internal-settings-thoughts-and-information/

http://forums.macrumors.com/showthread.php?t=1599198 

참고로 포럼글은 댓글이 4페이지 까지 있다.)



아이폰4를 iOS7 으로 올리기도 했고, 탈옥도 했으며 잠깐 이것저것 해보니

저게 존재한다는 건 분명해서(내부 파일이나 클래스 등) 나도 저걸 시도해봤다.


처음엔 저 pastie 글을 못 찾아서 나 혼자 이것저것 시도하면서 알아낸 게 꽤 있었는데 저 글 하나로 도로묵..ㅠㅠ

처음에 SpringBoard 에 트윅이 안돌아가는 줄로만 알고 있어서 이래저래 삽질을 했었다..


hamza sood 가 설명하는 활성화 방법을 해봤었으므로,

이것과 관련한 내용부터 쓰겠지만, 사실 이건 내부 설정 활성화 자체만을 원하는 사람에겐 필요없는 부분이고

이 부분 때문에 헷갈려 하는 사람도 있는 것 같아서 접어 놓겠음. ㅋ


삽질의 과정.. 정도이고 지금 좀 더 이해하고 싶으면 펼쳐볼 것...




https://vine.co/v/hgJuTKHp63U

요건 호출 하는 vine 동영상이고


http://pastie.org/8372228

요건 외국인들 용으로 써논 글..

인데 별 내용 없다.

지금 이 글을 상당히 수정한 마당에 저 글에도 오류가 있을 거고...


아, 내부 설정 활성화 방법은

deVbug 님이 HiddenSettings7 이란 트윅을 만들어서 개인 저장소로 배포중이니 그걸 사용하면 좋다.

얘는 컨트롤 센터에서 호출하는 방식. 오픈소스이기도 하고..


검색ㄱㄱ

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

맥에서 카카오톡, 소리 나오게 하기  (1) 2013.11.15
Mac openVPN 서버 설치  (0) 2013.11.14
iOS7 아이폰4 반탈  (2) 2013.10.01
iOS7, 벡터 아이콘?  (3) 2013.09.22
Mac 내장 웹서버 활성화 하기 (웹 공유)  (1) 2013.09.05

0. 서론


(limera1n exploit 덕택에 모든 os 에서 반탈이 가능한) 아이폰4의 반탈툴이 나왔다.

이걸 부트룸 익스플로잇이라 하던가...?

이제 4가 지원 안 하는 os 가 생기면 이래저래 불편해질 것 같기도 하다..

펌웨어 추출부터가 안될테니...


여튼 opensn0w 라는 툴로 iOS7 에 올린 4를 반탈옥 할 수 있다.

아직 이런저런 문제가 많아서 직접 컴파일해서 써야하지만...


과정을 주욱 써봤는데..

마지막을 제하고는 devbug 님 과정을 따라간다.

내용이 좀 길어져서 나름 차례도 나눠봤고...


opensn0w의 주소는 https://github.com/winocm/opensn0w


구글 검색하면 LBBNetwork 것이 먼저 뜨지만 위가 원본인 것 같다.

하지만 맥에서 그대로 진행하기에는 문제가 많고 리눅스에서나 제대로 작동한다나....


devbug 님이 맥에서 작동하게 수정하셨으니 그걸 사용하자.

http://devbug.me/777


그리고 이건 맥에서 작동되기 전에 원래 작성하셨던 글.. 후반부 작업을 위해서 봐야 함

 http://devbug.me/775


지금부터는 내가 다시 정리한 글이다.


1. 탈옥툴 컴파일 + 탈옥


일단 뎁벅님이 친절히 diff 파일 뿐만 아니라 과정을 녹화해주셨다!!

그 영상의 내용 정리 + 내가 조금 수정 ㅋㅋ


$ mkdir ~/opensn0w-build

$ cd ~/opensn0w-build/

$ git clone https://github.com/winocm/opensn0w

+ devbug 님 블로그에 있는 opensn0w3.diff.zip 파일을 받아서 압축 해제 후 ~/opensn0w-build/opensn0w/ 에 넣어준다.

$ cd opensn0w

$ patch -p1 < opensn0w3.diff

...

$ chmod +x ./autogen.sh

$ ./autogen.sh

+ 혹시 여기서 에러나면 automake 등을 설치해줘야 한다.

homebrew 가 설치되어 있으면 $ brew install automake 하면 됨.

homebrew 없으면 설치하든지 뭐 알아서... 난 brew를 설치해놨었기 땜에 brew update 정도만 해주고 진행했음

...

$ ./configure --prefix="/Users/사용자명/opensn0w-build/"

...

$ make install

...


여기까지 별 에러없이 왔으면 ~/opensn0w-build/ 폴더 안에 이것저것 많이 생겨있다.

아이폰4 를 iOS7 으로 올리고(7.0, 7.0.2 상관 없다) dfu 모드로 진입 시킨다.


$ cd ..

$ sudo ./bin/opensn0w_cli -p ./bundles/iPhone3,1_7.0_11A465.plist

...


기다리면 탈옥 끝~

반탈이니 재부팅시에도 마지막 작업만 해주면 된다.

국내 출시 아이폰4 가 아니라면 bundles 폴더 안에 다른 기종 plist 도 있으니 그거 사용하면 됨.




2. SSH 설치


여기까지가 끝인 줄 알았는데 아직 많이 남았다..ㅠㅠ

http://devbug.me/775  이 글 뒷 부분을 따라가야 한다.


dev team에서 예전부터 배포해오던 SSH Bundle

이 링크 하단 부분에 "SSH bundle v2" 를 다운로드,


http://msftguy.blogspot.kr/2012/01/aut ··· and.html

이 링크에서는 "runnable JAR archive" 를 다운로드.


폰을 dfu 모드로 진입시키고 jar 파일을 실행하면 얘가 이것저것 한다.

끝나면 localhost:2022 로 ssh 접속이 가능함.

mount.sh 도 제공하는 것 같지만 잘 모르겠으니 그냥 devbug 님 하시는대로 따라갔다..ㅋㅋ


Mac $ ssh root@localhost -p 2022

Password: alpine

iPhone # mount_hfs /dev/disk0s1s1 /mnt1

(램디스크 작업이 뭔진 모르겠지만 쉘이 좀 다르다.. 걍 하라는대로 하자 ㅋㅋ)

+ 위에서 받은 SSH2_bundle.tgz 파일을 /mnt1/ 에 전송

+ SSH2_bundle.tgz 을 컴퓨터에서 압축 푼 후 bin 아래의 gzip, bzip2, tar 3개를 아이폰의 /bin/ 에 전송

# cd /mnt1

# tar xzf SSH2_bundle.tgz


그리고 마지막으로 /mnt1/etc/fstab 파일 수정.


/dev/disk0s1s1 / hfs rw 0 1

/dev/disk0s1s2 /private/var hfs rw 0 2


요렇게 바꿔주면 된다.


# kill 1

+ 실행한 jar 종료, 아이폰 dfu 진입 후 위 탈옥 작업 마지막 부분을 해주면 부팅 된다.




3. 탈옥 마무리(dpkg, apt)


이 부분부터는 devbug 님이 제대로 안 적어두시기도 했고, 방법이 다르다.

devbug 님의 경우 패키지들 다운그레이드를 해야한다고 하셨는데 난 그런거 안했음;;;ㅋㅋ


dpkg와 apt 등이 제대로 작동하지 않을텐데,

그 이유는 2번 ssh  설치에서 /private/var/ 부분을 마운트 해주지 않고 압축을 해제해서

해당 부분의 파일이 제대로 복사되지 않아서 생기는 문제이다.

나도 나중에 알았는데.. 위에서 마운트 해주고 압축풀면 되겠지만 난 이미 끝났으므로 따로 붙여넣었다.

아마 mount.sh 스크립트를 사용하면 둘다 마운트 될 것이고 그 후에 압축을 풀면 되겠지?


여튼 이걸 따라왔으면 SSH2_bundle.tgz 압축 푼 파일들에서 /private/var/ 안에 있는 파일들을 아이폰의 /var/ 로 넣어주면 된다.

참고로 폴더채로 붙여넣으면 안된다.

없는 폴더이거나 빈폴더면 상관없지만 폴더에 내용물이 있으면 내용물만 따로 복사해주자.


이 후 dpkg, apt 등이 "거의" 잘 작동한다.

하지만 설치하다 보면 firmware 필드 부분 때문에 막힌다.


/var/lib/dpkg/status 파일을 수정,


Package: firmware

Essential: yes

Status: install ok installed

Priority: required

Section: System

Installed-Size: 0

Architecture: iphoneos-arm

Version: 7.0.2

Description: almost impressive Apple frameworks

Tag: role::cydia

Name: iOS Firmware


이걸 적당히 위화감 없이 잘 넣어준다.

아직까지도 "거의" 잘 작동한다. ㅋㅋ

마지막으로


# apt-get update

# apt-get install cydia

# apt-get update


여기까지 하면 끝.


cydia 는 어차피 실행되지 않지만 깔아주는 이유는 소스 때문에..

설치하지 않으면 몇몇 패키지들을 못 찾는다..

cydia source 패키지가 따로 있는 걸로 아는데 이것만 따로 설치해줘도 될 것 같다.

cydia 또한 직접 수정하면 실행 시킬 수 있는 것 같다. devbug 님은 하셨고...


cydia 는 실행이 안되지만 ifile 은 잘 된다.

참고로 cydia, iFile 등 앱 설치 후 아이콘이 나타나지 않는데 uicache 도 안먹는다.

devbug 님이 쓰셨듯이, /var/mobile/Library/Cache/ 폴더 날리고 재부팅+탈옥 작업을 해주면 나타난다.




4. 소감(?)


UIKit, SpringBoard 에 트윅이 작동하지 않는건 알고 있었지만

cycript 의 작동 여부와 SimulateTouch 정도를 테스트 해볼려고 탈옥을 진행해 봤다.

결론은 시간 낭비.


cycript 는 Segmentation fault: 11 을 내뱉으며 안되고

SpringBoard, UIKit 뿐만 아니라 backboardd 에도 트윅이 안 붙는다.

고로 내가 만든 트윅 중에선 테스트 해볼 수 있는게 없음...ㅋㅋ


SpringBoard, backboardd 에 후킹된다.

UIKit 으로 다 붙이는건 확인 안해봄.


나 혼자 쓰는 것 중 특정 앱에만 붙어서 돌아가는건 잘된다.

단지 /var/mobile/Library/Keyboard/ 가 sandbox 를 벗어날 수 있는 폴더라 해서 사용했었는데,

파일을 읽어오지 못한다. 탈옥 툴의 문제인지 iOS7 의 변경사항인지는 잘 모르겠지만..

내 착각이였음ㅋ 잘됨ㅋ

블로그 주소를 바꾸면서

기존 주소를 새 주소로 리다이렉트 시켜놨는데 리퍼러에 기존 주소가 계속 찍히는 문제가 있었다..



요련 식으로 말이지....


어떻게 해결하나 했는데 redirect 방식을 301 로 바꿔주면 된다고 함.


기존에는 apache2 설정을 통해서


<VirtualHost *:80>

        ServerName blog.ghj.kr

        Redirect / http://blog.iolate.kr/

</VirtualHost>


요런 식으로 해놨는데 이 경우 302가 기본값이고


<VirtualHost *:80>

        ServerName blog.ghj.kr

        Redirect 301 / http://blog.iolate.kr/

</VirtualHost>


이렇게 301 redirect 로 바꿔주면 된다.


302 는 임시고 301 은 영구적인 redirect 라나 뭐라나...

근데 301 대신 302 를 워낙 많이 써서 검색엔진에서도 302를 301로 인식하고 주소를 바꿔준다고 한다.

그때도 301, 302 에 대해 검색해보고 결론은 저대로 놔두면 된다 였는데 다시 검색하니 왜 다른건지 모르겠다.


php 에서는 이런 식으로 넘기면 된다고 함.

(근데 IE 6~8 에서 500 에러 난다. 쓰지 말자 ㅋ)

<?

  header (‘HTTP/1.1 301 Moved Permanently’);

  header (‘Location: newurl’);

?>



저 리퍼러들이 사라질지 아닐지는 좀 더 지켜봐야 겠지만.


안사라진다.. 젠장...


일단 사파리, 크롬 등 웹킷 기반에서는 리다이렉트시 전부 리퍼러를 없앤 채로 보내주는 것 같고

IE 도 6 제외하고는 리퍼러를 다 제거하고 리다이렉트 해주는 듯 하다.


리퍼러가 브라우저가 설정해서 보내주는 거라 브라우저를 많이 타는 것 같은데...

도대체 범인을 모르겠다... IE6 을 아직까지 쓰는 사람은 거의 없을테고.. 문제의 다른 브라우저가 있다는 건데...


여튼 좀 짜증나서 이전 안내페이지를 만들었다.

많이 엉성하지만, 나름 깔끔하고 괜찮다고 생각 중....ㅋㅋ


추가로 .htaccess 파일을


RewriteEngine On

RewriteRule . index.html [L]


이렇게 설정함으로써 주소 뒤에 어떤 문자열이 있든 index 페이지로 오게 해놨다.

참고로 apache2 의 redirect 를 사용하지 않은 이유는 혹시나 검색엔진이 이 안내페이지로 주소 이전한 걸로 오해할까봐...


뒷 문자열을 받아서 그대로 새 주소를 다시 보여주는 것도 가능하지만,

그렇게 하면 또 리퍼러 리스트에 옛날 주소가 잔뜩 쌓일 것 같아서 관뒀다..


이번에도 리퍼러가 엄청 쌓인다면 포기하고 뒷 문자열 붙여서 주소 만들어줄 생각..

+ 로그 저장해서 도대체 어디서, 어느 브라우저가 범인인지도 확인해 봐야겠다.


일단은 귀찮으니 생략ㅋ


원인은 중국..

뒷 이야기는 

특정 국가(중국!!) 차단하기

여기서 계속...

'Linux, Server, Web' 카테고리의 다른 글

Apache2 userdir 모듈에서 php 작동안함 문제  (0) 2015.06.28
특정 국가(중국!!) 차단하기  (0) 2013.10.19
Unix, Linux, BSD, 그리고 MacOS  (0) 2013.01.03
phpmyadmin 에러  (2) 2012.11.18
사용해 본 VPS 비교  (2) 2012.11.14

+ Recent posts