아쉽게 Dark_AleX가 직접적으로 답을 해주지는 않았지만, 오랫동안 PSP용 프로그램을 개발해왔고, OSPBT나 낸드툴 등 유용한 프로그램을 발표했던 유명한 개발자 'cory149'가 대신 답변을 해주었네요. [출처가기]
꽤 흥미있는 내용이라 번역내용을 올려봅니다. (언제나처럼 오역/오타가 많습니다. 특히나 이 글에서는...)
기술적인 내용이 너무 많아서 번역 내용을 가지고도 이해하기 힘들지도 모르겠네요. 하지만 아주 오래전부터 커.펌을 사용하셨던 분들이라면 아마도 대충은 알아볼 수 있겠죠.
이하 내용은 단순한 해외 사이트의 번역 내용이며, 그 내용 역시 단순한 개념 설명 정도라 커스텀.펌웨어 설치에 직접적으로 관련된 내용은 전혀 없습니다.
Q) 커.펌 개발은 어떻게 시작했나요? 그는 펌웨어 모듈을 디크립트하는 방법을 알아내야만 했을텐데요. 물론 그것으로 무엇을 하고 어떻게 동작하는지 알아내려면 모듈들을 디셈블러로 로드해야했을 거라고 생각됩니다.
A) 내가 그의 프로그램을 처음 본 것은 humma.kavula의 ISO Loader를 향상시킨 버전이었다. 그가 그 이전에 어느쪽에서 프로그램 개발을 시작했는지는 나도 잘 모른다.
공식적인 커스텀.펌웨어는 펌웨어 1.50에 패치하는 'proof of concept'이 시작이다. 비록 그 이전에도 이와 비슷한 프로그램이 작업되어 왔었지만... (이미 그 당시에 UP 모드칩과 epsilon이 사용가능했다.)
Q) 그가 원하는 기능을 넣은 펌웨어는 어떻게 얻었나요? 펌웨어 파일을 분해하고 다시 작성했나요? (그가 실제로 그렇게 하지는 않았다고 생각합니다. 그렇다면 커.펌 설치시에 공식 펌웨어 파일이 필요하지는 않았을테니까...)
A) 펌웨어 모듈을 리버싱하고 테스트하는 많은 작업을 했다. 펌웨어 전체를 다시 작성해서 만든 것이 아니라 리버싱과 모니터링을 통새서 어떻게 작동하는지를 알아낸 것이다. 그리고 나서 그것들이 작동하는 방법과 가지고 있는 기능들을 변경하기 위해 전략적으로 개선해나갔다. 때때로 원본 펌웨어에 아주 약간의 새로운 기능을 추가해서 교체하기도 하고, 때때로 메모리상에서 몇 바이트만 패치하기도 한다.
Q) 그는 공식 펌웨어 파일의 특정 부분만 간단하게 패치하는 것인가요? 홈브류같은 프로그램의 신뢰성을 체크하는 코드부분만을 패치하는 건가요? PS1 에뮬이나 ISO 로더처럼 이미 포함된 추가기능에 대해 묻는 것이 아니라 1.50 이후에 나온 펌웨어 버전에서 홈브류를 어떻게 실행되게 만들었는지 궁금합니다. 홈브류를 실행하기 위해서 오랫동안 그의 커.펌에서는 기본적으로 펌웨어 1.50의 서브셋이 같이 설치되어왔던 것으로 알고 있습니다. 물론 지금은 4.xx, 5.xx 커널에서도 홈브류를 불러올 수 있지만요.
A) 모두 맞다. 하지만 그것보다는 조금 더 복잡하다. 펌웨어를 패치하는 것은 그 파일 자체만을 가지고는 할 수 없고, 해당 파일이 PSP에서 디크립트되고 로드된 이후 메모리상의 데이터를 프로그래밍해야 한다. 그래서 그는 'HEN(Homebrew ENabler)'이라고 불리우는 몇 가지의 패치 모듈 형식을 만들었다. 그리고 인증되지 않은 EBOOT.PBP 파일을 구동하기 위해서 PSP의 보안을 깨뜨렸다. 단지 이미 존재하는 파일들을 패치해서 로딩/인증 기능을 교체하는 것만으로는 불가능한 일이다.
Q) Dark_AleX는 신뢰성이 없는 프로그램을 불러오기 위해서 그것을 체크하는 루틴을 스킵하도록 펌웨어를 패치하는 건가요? 만약 그가 단지 공식 펌웨어를 패치하는 것이고 그래서 그의 인스톨러에서는 공식 펌웨어 파일이 필요한 것이라면, 우선 공식 펌웨어 파일들을 패치하고 그 과정이 끝나면 그가 직접 만든 다른 파일들을 추가로 설치하는 것이겠죠. 하지만 만약 이게 이치에는 맞다고 하더라도, 이런 추가 작업을 할 이유가 없다면 틀리겠네요. 그렇습니까?
A) 펌웨어 1.50의 'proof of concept'에서는 메인 vsh 프로그램(vshmani.prx)이 인증되지 않은 바이너리로 교체되도록 했었다. 그 당시 알려졌던 '폴더 익스플로잇(exploit) 없이 홈브류를 구동할 수 있도록 하는 특정 패치'를 원본 vshmain에 적용하도록 하는 작은 프로그램이었다. 그 다음에 원래의 vshmain 바이너리를 구동하게 된다. 이 방식은 상당히 오랫동안 커스텀.펌웨어에서 사용되어 왔다. (그 당시에는 사용자가 생성한 IPL로 교체하는 방법이 없었다.) 그래서 많은 커스텀.펌웨어가 기본적으로는 1.50 커널을 먼저 불러오고, 이후 더 높은 커널(2.X)를 연계해서 불러오는 방법을 사용했다.
많은 리버싱과 개선작업을 통해서 오늘 날 당신이 커스텀.펌웨어를 불러올 때에는 기본적으로 몇 가지의 추가 모듈을 로드 프로세스에 추가하게 된다. (IPL 내의 btcnf 파일과 btcnf 파일을 지정하는 명령을 변경하고, 몇 가지 형태의 로드/인증 확인 과정을 IPL 프로세스에 패치한다.) 이러한 모듈은 m33 sdk에 기능을 제공하고, (그 파일 자체가 아닌 로드된 후 메모리상의)펌웨어 파일을 리커버리 메뉴의 설정에 따라 패치하게 된다. CPU 부트 롬이 시작될때 그 과정 자체가 해킹될 수 있으므로, 더 이상 낮은 펌웨어 커널에서 높은 펌웨어 커널을 연계해서 불러올 필요가 없어지게 되었다.
참고로, IPL이란 'Initial Program Loader'의 줄임말로, CPU 부트 롬 내부의 코드에 의해 불러와진다. 그 안에는 몇 가지 하드웨어의 상태를 초기화하는 순서와 PSP의 펌웨어를 불러오는 순서 등이 설정되어있다.
A) 내가 그의 프로그램을 처음 본 것은 humma.kavula의 ISO Loader를 향상시킨 버전이었다. 그가 그 이전에 어느쪽에서 프로그램 개발을 시작했는지는 나도 잘 모른다.
공식적인 커스텀.펌웨어는 펌웨어 1.50에 패치하는 'proof of concept'이 시작이다. 비록 그 이전에도 이와 비슷한 프로그램이 작업되어 왔었지만... (이미 그 당시에 UP 모드칩과 epsilon이 사용가능했다.)
Q) 그가 원하는 기능을 넣은 펌웨어는 어떻게 얻었나요? 펌웨어 파일을 분해하고 다시 작성했나요? (그가 실제로 그렇게 하지는 않았다고 생각합니다. 그렇다면 커.펌 설치시에 공식 펌웨어 파일이 필요하지는 않았을테니까...)
A) 펌웨어 모듈을 리버싱하고 테스트하는 많은 작업을 했다. 펌웨어 전체를 다시 작성해서 만든 것이 아니라 리버싱과 모니터링을 통새서 어떻게 작동하는지를 알아낸 것이다. 그리고 나서 그것들이 작동하는 방법과 가지고 있는 기능들을 변경하기 위해 전략적으로 개선해나갔다. 때때로 원본 펌웨어에 아주 약간의 새로운 기능을 추가해서 교체하기도 하고, 때때로 메모리상에서 몇 바이트만 패치하기도 한다.
Q) 그는 공식 펌웨어 파일의 특정 부분만 간단하게 패치하는 것인가요? 홈브류같은 프로그램의 신뢰성을 체크하는 코드부분만을 패치하는 건가요? PS1 에뮬이나 ISO 로더처럼 이미 포함된 추가기능에 대해 묻는 것이 아니라 1.50 이후에 나온 펌웨어 버전에서 홈브류를 어떻게 실행되게 만들었는지 궁금합니다. 홈브류를 실행하기 위해서 오랫동안 그의 커.펌에서는 기본적으로 펌웨어 1.50의 서브셋이 같이 설치되어왔던 것으로 알고 있습니다. 물론 지금은 4.xx, 5.xx 커널에서도 홈브류를 불러올 수 있지만요.
A) 모두 맞다. 하지만 그것보다는 조금 더 복잡하다. 펌웨어를 패치하는 것은 그 파일 자체만을 가지고는 할 수 없고, 해당 파일이 PSP에서 디크립트되고 로드된 이후 메모리상의 데이터를 프로그래밍해야 한다. 그래서 그는 'HEN(Homebrew ENabler)'이라고 불리우는 몇 가지의 패치 모듈 형식을 만들었다. 그리고 인증되지 않은 EBOOT.PBP 파일을 구동하기 위해서 PSP의 보안을 깨뜨렸다. 단지 이미 존재하는 파일들을 패치해서 로딩/인증 기능을 교체하는 것만으로는 불가능한 일이다.
Q) Dark_AleX는 신뢰성이 없는 프로그램을 불러오기 위해서 그것을 체크하는 루틴을 스킵하도록 펌웨어를 패치하는 건가요? 만약 그가 단지 공식 펌웨어를 패치하는 것이고 그래서 그의 인스톨러에서는 공식 펌웨어 파일이 필요한 것이라면, 우선 공식 펌웨어 파일들을 패치하고 그 과정이 끝나면 그가 직접 만든 다른 파일들을 추가로 설치하는 것이겠죠. 하지만 만약 이게 이치에는 맞다고 하더라도, 이런 추가 작업을 할 이유가 없다면 틀리겠네요. 그렇습니까?
A) 펌웨어 1.50의 'proof of concept'에서는 메인 vsh 프로그램(vshmani.prx)이 인증되지 않은 바이너리로 교체되도록 했었다. 그 당시 알려졌던 '폴더 익스플로잇(exploit) 없이 홈브류를 구동할 수 있도록 하는 특정 패치'를 원본 vshmain에 적용하도록 하는 작은 프로그램이었다. 그 다음에 원래의 vshmain 바이너리를 구동하게 된다. 이 방식은 상당히 오랫동안 커스텀.펌웨어에서 사용되어 왔다. (그 당시에는 사용자가 생성한 IPL로 교체하는 방법이 없었다.) 그래서 많은 커스텀.펌웨어가 기본적으로는 1.50 커널을 먼저 불러오고, 이후 더 높은 커널(2.X)를 연계해서 불러오는 방법을 사용했다.
많은 리버싱과 개선작업을 통해서 오늘 날 당신이 커스텀.펌웨어를 불러올 때에는 기본적으로 몇 가지의 추가 모듈을 로드 프로세스에 추가하게 된다. (IPL 내의 btcnf 파일과 btcnf 파일을 지정하는 명령을 변경하고, 몇 가지 형태의 로드/인증 확인 과정을 IPL 프로세스에 패치한다.) 이러한 모듈은 m33 sdk에 기능을 제공하고, (그 파일 자체가 아닌 로드된 후 메모리상의)펌웨어 파일을 리커버리 메뉴의 설정에 따라 패치하게 된다. CPU 부트 롬이 시작될때 그 과정 자체가 해킹될 수 있으므로, 더 이상 낮은 펌웨어 커널에서 높은 펌웨어 커널을 연계해서 불러올 필요가 없어지게 되었다.
참고로, IPL이란 'Initial Program Loader'의 줄임말로, CPU 부트 롬 내부의 코드에 의해 불러와진다. 그 안에는 몇 가지 하드웨어의 상태를 초기화하는 순서와 PSP의 펌웨어를 불러오는 순서 등이 설정되어있다.
Dark_AleX가 커.펌을 개발하기 위해 얼마나 많은 시간을 할애하고 고민했는지 알 수 있네요. 하지만 한 때 소스코드가 유출되면서 힘든 일이 있었죠. 마음만 먹으면 그 소스코드를 약간만 수정해서 새로운 커.펌을 만들 수도 있었으니까요. 그래서 단순한 헥스에디팅 수준의 커.펌이 여러 팀에서 많이 나온 적도 있었지만, 현재는 그런 일이 거의 없네요. 여기저기서 비난도 많이 받았고, 결국 한계가 드러나다 보니 이제는 모두 Dark_AleX만 믿고 의지하는 듯 합니다.
그리고 오랜만에 'proof of concept'이라는 단어를 보니 기억이 새록새록나네요. 당시 펌웨어 1.50에 설치해서 부팅 영상 스킵이나 싱글 폴더 홈브류의 구동을 지원하는 기능을 가지고 있어 현재 커.펌의 시초라고 할 수도 있습니다. 제가 PSP를 구입해서 사용한 건 그 바로 전이었고, 처음으로 네X버쪽에 블로그를 시작한 것이 'proof of concept 다음에 나온 2.71 SE 시절이니 참 오래도 되었습니다. ㅡㅡ; (낙서님이 그립네요. ^^*)
# 과연 제대로 읽어주시는 분이 계실지... 혹시라도 잘못된 내용이 있다면 제보주세요.
ㅋㅋ 이해안가 훜
답글삭제포포츠님 이제 커펌관련 소개는 안하시나요?
답글삭제1.50 패치는 정말 추억이군요. 그 때는 정말 낙서님 덕분에 재밌는 피숩 라이프를 즐겼었는데 말입니다. 오랜만에 추억으로 입가에 미소가 ㅎㅎ
답글삭제게이파이로//
답글삭제커펌관련소개는 popotz.lu.to 포포츠 카페에 가보시면 얻으실 수 있습니다
-ㅅ- 다크 알렉스가 직접 답한게 아닌게 좀 아쉽지만 잘 읽어봤습니다 -ㅅ-
답글삭제흥미롭습니다, 그런데 어려워서 못읽겟네요,, 전 올해 4월부터 신형 psp를 쓰게되서 예전 psp 계 얘기는 상당히 흥미롭네요 ^^
답글삭제딱히 소스코드라고는 하기 힘들것 같습니다. D_A도 SCE의 원본 소스코드를 재현해 낸게 아니니까요. 그나저나 오픈소스 기반의 커널이 필요할 때가 온것 같은데, 누구 기술지원 해주실분 없나요?
답글삭제구형부터 psp를 사용을 해오긴 했지만 저도 2.x버전부터 사용을 해서 'proof of concept'는 잘모르겠지만... 아무튼간에 P배터리 나오기 전에는 커펌사용에도 상당한 제약이 많았었죠..이전에는 1.X 펌웨어 기판으로 커펌을 설치해야됬기에 설치도 많이 까다로웠고 커펌중 벽돌되버리면 복구도 어려웠으니까요.. 새 커펌 나와도 한글화 작업도 따로 해서 설치해야됬고...그러다 3.X이후로 한글화패치 따로 없이도 한글 사용가능해 졌고 그뒤에 p가 나오면서 일대혁명ㅎ
답글삭제비밀 댓글 입니다.
답글삭제포포츠님. 혹시. Ospbt 출처좀알수있을까요 파일을다운받고싶음데. 못찾게더라구요 ㅋ 문제가된다몀 바로삭제하겟습니다. 그리고. 개발자이름도알려주세요
답글삭제꽤나.... 옛날일인것 같네요... 제가 2.3버젼 쓰면서 계속 HEN으로 데브훅으로 돌렸으니.... 커펌은 3.03OE버젼 부터 알게된것 같군요.....
답글삭제@음,, - 2008/12/07 22:10
답글삭제음,, / 재밌게 읽어주셨다면 저야 감사드리죠. ^^
@mikoAkira - 2008/12/07 23:32
답글삭제mikoAkira / 유토피아는 감감 무소식이네요.
@hk - 2008/12/07 23:35
답글삭제hk / 예전부터 쭉 살펴보면 정말 재미있어요.. ^^
@Anonymous - 2008/12/08 10:38
답글삭제윤데페 / 알렉스의 악의 기운만 빠져나가 새로운 인격이 형성되었는데, 그가 바로 다크 알렉스!!! (드래곤볼의 피콜로와 동격??)
근데.. 왜 비밀글로... ㅡㅡ;;
@도움좀 - 2008/12/08 13:06
답글삭제도움좀 / http://nds.cmamod.com/downloads/psp_downloads/
@kerty - 2008/12/08 13:18
답글삭제kerty / 당신엔 커.펌과 데브훅이 대세였죠. 살아남은 건 커펌이군요.
@C.eo - 2008/12/07 21:53
답글삭제C.eo / Dark_AleX는 신비주의...인가요?
이야... 추억속의 프로그램들이 하나하나 나오는군요;
답글삭제저는 ISO Loader 시절 전부터 PSP를 사용해 온지라;
한번씩 다 거쳤던 프로그램들이네요... 이것저것 만지다 벽돌된적도 많았었는데...
그때는 소코가 지금과 다르게 A/S도 해줬는데
역시 사람들 하는거에? 매출에 따라 바뀌게 되는걸까요...
아무튼 재미있게 읽었습니다.
@루시 - 2008/12/08 13:37
답글삭제루시 / 지금 다시 예전으로 돌아가라면 끔찍할 듯 싶네요. ^^
옜날 일이네요... 그나저나 닭알은 dc8내놓을 예정없나?
답글삭제그래도 판도라 이전의 시대는 기억하기도 싫다능 ㅠㅠ(그전에 벽돌이었던 1人)
답글삭제ㅋㅋ 그렇군요. 저도 2.71 HEN으로 뎁혹을 열씨미...
답글삭제처음 샀을 때는 전혀 그런것도 모르고 한 1년 사용하다가...
누군가의 블러그를 통해서... 아마도~ 손피군 아님, 낙서님 인거 같은데...@.@
조마조마 하는 마음으로 2.71에서 다그를 감행했다는..@.@
당시에는 벽돌되면, 그냥 벽돌로 소장하던가... 보드를 교체하던가...
그 이후 요술 메모리아 만물 베터리는... 혁명적인 발표였죠.
마치 다른나라의 언어를 보는듯한 느낌은 뭘까;;
답글삭제오타를 발견해버렸습니다..
답글삭제리버싱과 모니터링을 통'새'서;
포포츠님 혹시 정펌 3.93 에서 커펌된 PSP 없이 커펌 할 방법있나요,,?
답글삭제있으면 링크좀 걸어줏요 ㅠ_ㅠ
@PSP-2002 - 2008/12/13 07:41
답글삭제없습니다.
@PSP-2002 - 2008/12/13 07:41
답글삭제없습니다. 크리!!
뭐 물리배터리 만드실 용기가 있으시면 방법이없는것도 아님
손휘 언니께서 이거보고 공부좀 하겠네요.
답글삭제예전에비하면 Dark_Alex의 공이 매우크죠
답글삭제예전에 띵봉훅 셋팅할때만해도 으으 -_-
그리고 배경화면 바꾸는것도 가슴졸이면서 하고,,
낙서님 블로그도 자주갔었습니다.. ㅋㅋ
아마 손쉬운 XX XXX의 블로그로 바뀌신거 같은데 아닌가요?
근데 저는 커펌시절보다 그 때가 좋았던거 같아요,
건드리는 맛에 통쾌한 맛이 컸거든요 ㅎㅎ
@게이파이로 - 2008/12/07 17:54
답글삭제뭔소리냐는