2012-05-14 5 views
12

저는 Google과 많은 시간을 보낸 후에이 질문을하기로했습니다. 하지만 아직 내 질문에 대한 답변을 얻을 수 없었습니다. 여기에 세부 사항을 따르십시오 :iOS 이진 파일을 편집하고 다시 컴파일 할 수 있습니까?

나는 응용 프로그램을 가지고 최근에 Cydia에 게시했습니다. 그것은 다른 누군가에 의해 금 가게되어 토렌트 사이트에 올렸습니다. 흥미로운 부분은 내부에 이진 체크섬 확인 메커니즘이 있으며 전체 내용을 해킹 할 수 있었으며 이진 파일에 대한 변경 사항을 기반으로 새 체크섬 파일을 만들었습니다. 그들은 두 가지 기능을 편집하고 디 컴파일하여 급류에 게시합니다.

IDA Pro에 대한 연구를 수행 한 결과 함수 및 클래스의 실제 구현을 볼 수 있음을 확인했습니다. 그러나 함수를 편집하기 위해서는 함수의 주소를 찾고 HEX EDITOR를 통해 편집해야합니다. 이 부분이 나에게 혼란 스럽다. 아무도 나를 도와주지 않느냐? 나는 그것을 "unhackable"하게하고 싶지 않다. :) 그것이 그렇게 쉽게 나는 짐작하지 않는다. :) 그러나 나는 그들이 어떻게 해킹하는지 알아 내고 싶다. :)

제 질문은 iOS 바이너리에서 함수를 편집하고 다시 컴파일하는 방법입니다. 예를 들어 클래스 중 하나에 다음 메소드가 있습니다.

- (id) getSomething { 

    return @"Something"; 
} 

이 함수의 반환 값을 편집하고 싶습니다.

답변

6

일반적으로 "다시 컴파일하지 마십시오. IDA에 파일을 보내거나 문자열, 함수 호출 또는 원하는 것을 찾은 다음 16 진수 편집기 나 유사한 것을 사용하여 어셈블리 수준에서 파일을 편집하십시오. 대부분의 경우 조건부 점프를 무조건 점프 또는 nop (조작 없음)으로 간단히 변경하는 것만으로 충분합니다. 반환 값을 변경하려면 좀 더 많은 노력을 기울여야하지만 내 경험상 상수 또는 초기 값으로 지정된 경우 이진 파일 내부에서 char 시퀀스를 편집하거나 아니면 완전히 새로운 기능을 제공하고 어셈블러 코드를 원본 파일에 "복사"합니다. 새로운 기능이 원본보다 더 많은 공간을 차지하지 않도록해야합니다. 그렇지 않으면 모든 것이 훨씬 복잡해집니다. 그게 당신이 무엇을 요구했는지, 그렇지 않다면 당신이 이야기하고있는 앱을 말하면 더 깊이 볼 수 있습니다 :)

+1

내 질문에 대답하기 위해이 페이지에서 시간을 할애 해 주셔서 감사합니다. :) 그래서 저는 회사에서 일하면서 회사 이름을 밝힐 수 없으며 회사를 위해 제품이 개발되었습니다. 죄송합니다 .. 나는 어셈블러 코드를 대체하는 것에 대해 한 가지 더 궁금한 점이 있습니다. IDA Pro 시험판을 사용하고 있었기 때문에 정식 버전을 사용하여 코드를 대체 할 수 있습니까? – IndoThaiGeek

+0

다른 응용 프로그램을 사용하고 있습니까? – IndoThaiGeek

+0

시험판/전체판의 차이점에 대해서는 모르겠지만 IDA를 사용하여 이진 파일을 편집 한 적이 전혀 없습니다. Windows에서 Hiew를 사용하고 있습니다. – jimpic

관련 문제