2013-03-10 2 views
6

어떻게하면 Android 플랫폼에서 기본 공유 라이브러리 (.so)를 바이너리 변경으로부터 보호 할 수 있습니까? 예. 누군가가 응용 프로그램을 리버스 엔지니어링 한 후 JMP 명령을 NOP로 덮어 쓰고 해당 라이브러리를 루팅 된 장치에 배포 할 수 있습니다.Android 공유 라이브러리 무결성 보호

누군가이 가능합니까?

내가 찾고있는 것은 일련의 수표 (예 : 암호화, 체크섬 등) 구현에 대한 아이디어입니다. 물론 플랫폼이이 문제에 대한 지원을 제공하는 것처럼 보이지 않기 때문에 (내가 틀렸다면 올바르게 수정하십시오) 모든 클라이언트 측이되어야합니다. 따라서 모든 것이 약간 쓸모 없지만 최소한 리버스 엔지니어링을 방해 할 것입니다.

+0

물론 자신의 체크섬을 계산하고 코드 자체를 암호화함으로써 SO 보호를 구현할 수 있습니다. 몇 년 동안 Windows에서 이루어진 작업과 거의 비슷합니다 (단, 더 어렵습니다). 그러나 Linux에서 모듈 보호에 대한 경험이 없다면 시작하지 않는 것이 좋습니다. 귀하의 작업에 사전 제작 된 보호 제품이 있는지 여부는 알 수 없습니다. –

+0

감사합니다 @ EugeneMayevski'EldoSCorp. 시도하고 싶습니다 - 어떻게 당신 자신의 체크섬을 계산합니까? – AndroidSec

답변

3

예 할 수있는 일이 있으며 리버스 엔지니어에게는 매우 어려운 일이지만, 멈출만한 일은 할 수 없을 것입니다. Chris Eagle.

수정하지 못하게하는 가장 좋은 방법은 컴파일 한 후에 .so의 SHA-2을 취하여 런타임시 매번 다시 알려진 값과 비교하여 다시 해시하는 것입니다. 이 검사는 클라이언트 측에서 시행되므로 숙련 된 RE는 검사를 무시하도록 바이너리를 수정할 수 있습니다. 그것은 그것을 조금 더 어렵게 만듭니다. 코드 전반에 걸쳐 수표를 넣고 다른 검사 기법을 사용하면 RE가 수행해야하는 작업의 양이 늘어납니다. 그러나 Microsoft가 수백만 달러를 RE-RE 기술에 적용했으며 여전히 Office 및 Windows의 해적판이 존재 함을 알고 있습니다. 당신은 결코 그들을 모두 멈추지 않을 것입니다. 나의 개인 철학 (이제는 나 자신을 배웠다)은 궁극적으로 그것들을 시도하고 멈추게하는 것이 너무나 고통 스럽다는 것이다. 좋은 앱을 만들어 값 싸게 만들어 사람들이 살게합니다. 당신 물건을 훔치는 악당들이 어쨌든 그것을 사지 않았을 것입니다.

앱이 집에 전화하면 확인을 위해 서버에 해시를 제출할 수도 있습니다. 물론 RE는 이것을 우회 할 수 있지만 할 일이 하나 더 있습니다.

+0

정확히 내가 무엇을 찾고 있었습니까. 고맙습니다! – AndroidSec