>  기사  >  운영 및 유지보수  >  cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

WBOY
WBOY앞으로
2023-05-16 19:11:101973검색

여전히 Dashen apk를 예로 들며, 이전 앱 복호화 lua 스크립트 분석을 통해 Dashen apk의 lua 스크립트를 복호화할 수 있습니다. 이제 해당 리소스(구성 파일 및 사진 등)를 복호화해 보겠습니다. 더 중요한 구성 파일을 예로 들어보겠습니다. 해독 전:
cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

파일 헤드에는 fuckyou!라는 서명 값도 있습니다. 이것을 보고 우리는 먼저 xxtea로 암호화한 것인지 생각해 보았으며, 먼저 xxtea로 복호화한 후 압축을 풀었는데, 분명히 작업 중에 오류가 발생했습니다. 우리가 방금 말한 것을 부정해야 합니다. 우리는 계속해서 구성 파일의 암호를 단계별로 해독합니다.

잠시 생각해보세요. 파일 헤더는: fuckyou! 파일의 암호를 해독하려면 필연적으로 다음 문자열을 처리해야 합니다. fuckyou! , 그래서 우리는 idaPro에서 fuckyou 문자열을 검색할 수 있어야 하고, 그런 다음 fuckyou 문자열이 있는 코드 세그먼트에서 함수 분석, 디버깅 및 암호 해독을 사용할 수 있어야 합니다. idaPro를 열고 문자열 보기를 열고 "fuckyou"를 검색하여 가설을 검증하세요

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법                

아무것도 아닙니다! 내 생각엔 최적화가 완료되었고 문자열이 어딘가에 최적화된 것 같습니다.好 단서는 깨졌지만 여전히 호기심으로 인해 계속 진행할 수 있습니다. 이때 Cocos2D 프레임워크 소스 코드를 탐색하고 인터넷에서 일부 정보를 결합하면 파일의 Cocos2D 처리가 CCFileUtils 클래스에 캡슐화되어 있음을 알 수 있습니다.

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법 기능이 많고 기능이 많고 기능이 많고 기능이 많고 기능이 많고 기능이 많습니다.不一一贴了,从网上也找到了前辈的经验:

        

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법好了,我们现在回到idaPro,지금 수출窗口,搜索getData:

        

进这两个函数,反编译看다음으로는 그렇지 않습니다 별로 닮지 않았으므로 건너뛰고 먼저 동적 조정 중에 여기서 잠시 쉬어갈 수 있습니다. cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

                                                                                         getFileData를 다시 살펴보겠습니다.                         앱은 Android 플랫폼에서 실행되므로 Android 플랫폼의 CCFileUtilsAndroid::getFileData를 살펴보겠습니다.

         

코드가 매우 길어서 이 기능의 핵심 부분이 완료되지 않았습니다. :

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

위 사진을 보니 바로 그런 느낌이 드네요, 하하! 하지만 여전히 계속해서 분석하고 검증해야 합니다. 함수가 파일 헤더의 기호를 처리할 때 문자와 직접 비교하지 않고 ASCII 값과 하나씩 비교하므로 문자열 창에서 fuckyou를 찾을 수 없습니다! 의. 그런 다음 함수가 텍스트가 암호화된 형식을 준수한다고 판단하면 처음 8바이트를 제거한 다음(씨발!) XOR 테이블의 값으로 XOR 연산을 수행하여 256바이트마다 반복합니다. T BYTE_A1C55F를 보면 됩니다:

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

이 시점에서 우리는 기본적으로 파일 암호 해독 기능과 프로세스를 결정할 수 있으며, 그런 다음 앱이 이 기능을 호출할 때 메모리가 명확한 내용이어야 함을 확인할 수 있습니다. 메모리. . 디버그할 때 getData 및 CCFileUtilsAndroid:doGetFileData 함수의 시작과 끝에서 중단됩니다. GetData 함수는 다음을 중단합니다.

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​:

두 함수 모두 중단되지만 doGetFileData 중단점에서만 일시 중지됩니다. 이는 doGetFileData 함수가 암호 해독 프로세스 중에 사용됨을 나타냅니다. 이는 우리의 예상과 일치합니다. 레지스터와 메모리를 살펴보겠습니다.

​​​​​​​

cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법 doGetFileData 이전의 내용은 암호문이고 함수가 반환되기 전에 일반 텍스트로 해독된 것으로 밝혀졌습니다. 이는 이전 분석이 정확하다는 것을 보여줍니다.

자, 이제 XOR 테이블 byte_A1C55F를 복사한 다음 앱의 암호 해독 프로세스를 모방하고(GitHub에서 xor 디코딩 스크립트를 찾아 약간 수정할 수 있음) master.apk를 디코딩하는 작은 도구를 작성할 수 있습니다. 리소스가 해독되었습니다: cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법

위 내용은 cocos2d-LUA 리버스 엔지니어링에서 앱 리소스를 해독하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제