카테고리 없음

dump.bin을 이용한 실행화일 decrypt(암호화해독)해서 저장하기

애바른 2010. 11. 15. 10:29

이부분이 많은분들이 궁금해하시는 부분의 해답이라고 할수있습니다.
앱들중에 수정시이 필요한 부분이 있을때 decrypt작업을 끝낸후 간단하게 한두코드만 수정하면 마무리가 됩니다.
일단 crypt되어있는 앱을 수정하기 위해서 decrypt시켜야하는것이 제일 중요한 부분이죠.
crypt되어있는 앱실행화일을 아무리 수정하여도 원하는 답을 얻지는 못합니다.
자~ 그럼 시작해 볼까요~

먼저 준비를 챙겨보겠습니다.
OSX용 HEX편집기입니다. 일반적으로 인터넷에 나와있는 강좌는 Windows용 UltraEdit를 사용하죠. ^^ 이왕이면 간편하고 다루기편한 OSX용 편집기를 다루겠습니다.
0xED.zip

그리고 전강좌에서 만들었던 dump.bin과 HancomViewer실행화일을 준비합니다.
참고로 HancomViewer를 사용하는 이윤~ 그냥 decrypt하는 방법을 설명하는 예로 들기위함입니다.
전혀 원앱의 기능상..변화와 문제를 주지는 않습니다.
오픈하기전에 화일비교를 체크하기 위해 HancomViewer를 HancomViewer.XXX 로 하나 백업해두시기 바랍니다.

두 파일을 0xED로 오픈합니다. 그냥 두개를 한꺼번에 드래그드롭 시키면 되겠죠.
그럼 다음과 같이 창이 2개 뜰껍니다.
여기서 제일 중요한것이 있습니다.
왼쪽편이 6자리의 숫자는 16진수로된 주소창이고..오른쪽편 4단으로된 2자리씩 4개는 16진수로된 데이타값입니다.
마우스로 왼쪽하단의 창조절를 드래그하여 오른쪽을 꼭 그림과 같이 4단으로 만들어주세요~ 꼭~ ^^ 그래야 편합니다.
또 중요한것은 창하단에 보시면 왼쪽에서 3번째 Overwrite가 보일껍니다. 들여쓰기 상태를 보여주는 겁니다.
Insert로 되어 있다면 마우스로 더블클릭하셔서 Overwrite로 만들어 주세요~ 중요합니다.
..
먼저 dump.bin 데이타를 몽땅 카피합니다.
카피하기전에 dump.bin의 마지막주소값을 기억해야 합니다.

오른쪽을 스크롤을 맨하단까지~ 쭈욱~ 내립니다.
그리고 왼쪽의 6자리 16진수값을 메모해 둡니다.
629FF0
메모후 Cmd + a (전체선택)을 하신후에 Cmd + c (베껴두기)를 하세요.

이젠 crypt되어있는 HancomViewer화일을 decrypt하기 위해 방금카피한 dump.bin데이타값을 덮어씌웁니다.
덮어씌우기란 Insert가 아닌 Overwrite로 해야겠죠.
하지만 정확하게 그만큼을 덮어씌우기 위해 영역을 설정해야 합니다.
영역은..
001000 ~ dump.bin(데이타길이)입니다.
dump.bin데이타 길이는 아까 메모해둔 629FF0이겠죠.
이것을 그대로 대입하면 안됩니다.
001000부터 629FF0만큼의 데이타이기 때문에 629FF0 + 1000이 정확한 dump.bin데이타가 덮어씌어질 마지막주소자리입니다.
001000의 1000은 10진수가 아닌 16진수값입니다.
자~ 그럼 저번 강좌에서 사용했던 계산기(프로그래머모드)를 사용해 볼까요?


+ 1000을 대입합니다.
0x62AFF0이란 값이 나옵니다.
crypt된 HancomViewer를 decrypt하기 위해 dump.bin를 덮어씌어야할 영역은 0x001000 ~ 0x62AFF0이 됩니다.
그럼 HancomViewer창에서 영역을 선택해 볼까요.

001000 ~ 62AFF0까지 선택부분을 편집해서 그림으로 표현했습니다.
선택하기 쉬운방법을 알려드리죠~
오른쪽 상단에 있는 Go to Offset부분에 1000값을 입력합니다.
그럼 1000주소로 커서가 이동합니다.

이동된 부분 F에서 마우스로 1까지 클릭하며 드래그를 합니다. 그럼 F1이 블록이 씌워집니다.

이상태에서 다시 오픈쪽상단의 Go to Offset에 가셔서 62AFF0값을 입력합니다.

위의 그림과 같이 이동합니다.
여기서 조심스럽게 Shift키를 누른채~ 62AFF0주소줄의 맨끝에 마우스를 클릭합니다.

62AFF0까지라면 8B에서 끝나야 하지만..여기서 0x000000까지라는것은 그 주소의 라인의 전체를 이야기하는겁니다.
이젠 dump.bin데이타가 덮어씌어질 영역이 설정이 되었습니다.
그럼 이젠 붙이기를 해야합니다.
Cmd + v 하시면됩니다.
제대로 실행이 되었다면..
다음과 같이 보일껍니다.

데이타가 정상적으로 덮어씌어졌는지를 체크하기 위해서..
일단 저장을 하세요.
그리고 처음에 백업해놓았던 화일과 비교를 해보세요.

그림과 같이 1바이트도 차이가 나지않았야 합니다.
^^
제일 중요한 고비를 넘겼습니다.
이젠 데이타값~ 하나만 고치면 끝납니다.
cryptid값을 수정하는 겁니다. 현재 1로 되어있는 상태죠.
하지만 지금까지 한 작업은 decrypt를 한것이기 때문에 cryptid값은 0으로 수정이 되어야 앱이 실행 제대로 됩니다.
이 부분이 좀 난감한데~ ^^ 해외사이트나 국내사이트에도 딱히 명확한 주소를 가리키지 못하고 있습니다.
눈대중으로 찾아야하죠.
일단 Go to Offset에 800값을 입력하여 이동합니다.

윗부분 /lib/dyld... 과 아랫부분 T.../.../System/Library.. 사이에 존재합니다.
01 00 00 00 의 형태로~ 밑에 T부분에 가까운 주소에 있습니다.

마우스로 01의 0부분에 클릭하시고 0을 입력하세요. 여기서 잊지 말아야할것은 상태가 Insert인지 Overwrite인지 입니다. Insert로 되어 있으면 데이타가 밀리기 때문에 오류가 생깁니다.
혹 실수로 Insert상에서 0을 입력하셨다면..바로 윈도우상단에 화살표 < Undo를 실행하셔서 그전 작업상태로 전환하시고..Insert를 더블클릭하여 Overwrite로 전환하신다음에..
01의 0위치에서 0을 입력하세요~

^^
자~ 이제 다 끝났습니다.
처음에 말씀드렸다시피..dump.bin를 덮어씌어 crypt상태의 화일을 decrypt로 변경한 작업입니다.
저장하시고~
마지막 마무리는 iFile로 실행될수있도록 파일속성을 만들어주는겁니다.
작업과정을 거쳐서 파일의 속성이 변경되어 있는 상태이기 때문입니다.
파일을 iPhone으로 보내는 방법은 전강좌에서 iFile로 했듯이 해당 디렉토리로 가서 /HancomViewer.app/ <- 실홰화일이 있는 디렉토리..Wifi를 실행시켜 PC에서 브로우져로 접속 파일을 업로드하면 됩니다.
아니면 DiskAid나 PhoneView나 Transmit로도 괜찮고요.
파일이 카피되었다면..
이젠 iPhone에서 iFile을 실행 시킵니다.
그리고 HancomViewer.app/ <- 디렉토리로 이동합니다.

HancomViewer 오른쪽 > 를 클릭한다.


하단부분에 보면 소유권과 접근권한 정보가 보인다.
Owner를 mobile로 변경.
User, Group, World에 Execute속성을 추가한다.

이제 오른쪽 상단에 있는 Done 버튼을 클릭하면 마무리가 된다.

한번 실행을 시켜보자.

아무문제없이~ 실행이 잘됩니다.
^^
decrypt가 완벽하게 되었습니다.

이 상태에서 데이타변경을 하면 됩니다.
만약에 인터넷에서 설명되어있는 변경 주소가..
0x5436 1D ED > 2E E2으로 변경해야 한다면..
실제로는 0x1000을 뺀 주소를 적용해야 합니다.
0x4436 같은 16진수이기 때문에 그냥 빼면되죠.
..
이상입니다.
지금의 과정을 그대로 적용시키면 다른 관련 수정도 해결이 될것이라 생각합니다.