지금은 사용못하고있지만 평소 궁금한것이 있습니다.

홈 > 커뮤니티 > 질문 게시판
질문 게시판

지금은 사용못하고있지만 평소 궁금한것이 있습니다.

6 가즈아 8 4218
안녕하세요 린엔진 잘 사용하고있던 유저입니다.(이쪽계열 비전공자입니다..)

린엔진 중단되고.. 쉬면서 이것저것 많이해보면서 확장하는중인데.

궁금한것이 하나 있습니다.


주로 훅헬퍼 이용할때는 libil2cpp.so 를 많이 적어왔는데요

가끔 다른 어플 보면 libil2myutils.so 이런이름으로 바꾼?... 만들어진 앱이 있는가하면

libil2cpp.so가 없는 앱도 있긴 있더군요..

근데..

덤퍼로 so파일 풀어서 dnspy로 분석후 린엔진으로 replace 해보면 적용이 될 때도 많습니다..



저는 여태 분석용으로 항상 libil2cpp.so 만 파왔는데요..(사실 이부분은 그냥 남들이 하니까..똑같이 하는수준입니다)

혹시 앞서 많은분들의 엄청난 노력 끝에 핵심기능은 libil2cpp.so에 많이 존재한다고 판단해서 주로 이용하는것일까요...

아니면 다른 so도 많이 살펴봐야할지 아직은 감이 잘 안옵니다..

사실 libil2cpp.so 이거하나에만 2달을 썡고생해서 완성한게 딱하나있어서.. 다른 so파일, 다른앱에 엄두를 ㄷㄷ



또한, apk안에 xxxxxx.v7a 와 v8a가 있던데

왜 v8a쪽 수정을 하면 하나도 응답을 안하는 것일까요?...

혹시나 해서 안드7이상급 엘디4.0버전에서 해봣더니 아직은... 응답이 없습니다...


그냥 안드5이상급 엘디3.x버전 + apk에서 v7a쪽 진행하면 되는건지..

제추측이 완전히 빗나가서 엉뚱한걸 해보는것인지..

..마지막질문은 좀 정리가 안되네요..

아무튼

첨엔 그냥 커뮤니티에 팁들 보고 하라는대로 대가리박고 그대로했더니

이젠 머리가 좀 커져서 이것저것 궁금한게생기네요...




사실 린엔진 훅헬퍼 하나면 거진 모든선에서 정리되는 것 같던데(더군다나 소프트웨어 언어 아는거 하나도없는사람도..쉽게)

추후엔

arm hex trans ? 를 이용한 hex edit 쪽을 알아나가볼 예정이며,

시도조차 못하던 ida? frida..까지...언젠간 사용해보려고 합니다.. 사실 저에겐 이게 제일 큰산인듯..
8 Comments
M LIN 2020.05.13 00:13  
LD 플레이어는 libhoudini.so에 의해 ARMv7a 아키텍처 라이브러리를 에뮬레이팅하여 동작합니다.
단말기 CPU랑 우리가 쓰는 데스크탑의 CPU 아키텍처가 다르기 때문에 에뮬레이팅하여 동작한다고 보시면 됩니다. (물론 x86 라이브러리가 있으면 arm 라이브러리가 아닌 에뮬레이팅 없이 x86 라이브러리가 로드됩니다.)
ARM 아키텍처의 v7a는 32bit이고 v8a는 64bit입니다.
6 가즈아 2020.05.13 13:28  
아하 감사합니다. 정리가되었네요
2 살살봉 2020.05.16 19:29  
아~~~그렇군요 초보라 모르는게 너무많네요 공부를 열심히 해야겠어요
15 g00dluck 2020.05.13 10:23  
앱플레이어는 아래와 같이 동작한다고 정리할 수 있을거 같네요

1) 대부분의 앱플레이어는 x86 라이브러리로 동작
    일부 앱플레이어는 ABI설정을 통해 ARM(v7a), x86 선택가능
2) v7a, v8a만 있는 앱일 경우
    린님 설명대로  libhoudini.so 에 의해 v7a 라이브러리가 에뮬레이팅되어 동작
3) v8a 라이브러리만 포함된 앱의 경우
    64비트가 지원되는 실험적인 앱플레이어에서만 지원되며, 대부분의 앱플레이어서 앱 동작 불가
6 가즈아 2020.05.13 13:28  
감사합니다. 정리가되었네요
8 리피트싯 2020.05.13 18:16  
ARM에서 나온 CPU칩인 이상 RISK칩 입니다.
명령어의 길이는 이미 정해져있습니다.
모든 명령어는 4BYTE씩 나눠서 읽으시면됩니다.
하지만 명령체계의 버전이있습니다.

arm v7a 에선  R레지스터를사용합니다
인수, 결과 또는 스크래치 레지스터. R0 ~ R3
변수 레지스터. R4 ~ R11
정적베이스 레지스터. R9
내부 프로 시저 호출 스크래치 레지스터. R12
스택 포인터. R13
링크 레지스터. R14
프로그램 카운터.R15

arm v8 에서는 x레지스터를사용합니다
매개 변수 결과 등록 레지스터 X0
변수 레지스터 X1~X7
간접결과 레지스터 X8 <<구조가 클경우 결과의 주소위치를 전달하는데사용
발신 저장 레지스터 X9~X15
프로시저 내-호출 레지스터 X16~X17
Platform register: 커널 모드에서 현재 프로세서의 KPCR을 가리킵니다. X18
수신 저장 레지스터 X19~X28
프레임 포인터 레지스터 X29
링크 레지스터  X30
예를들어 MOV명령어에선
EX)::
MOV R0,#1  01 00 A0 E3
MOV X0,#1 20 00 80 D2

정도의 차이로 명령어가바뀌고 CPU가 읽어들이는 양이 변경된것입니다.
열공하세여~
6 가즈아 2020.05.14 09:59  
와우..감사합니다 ㄷㄷ 조만간 레벨업좀하면 위 정보 정리하러 이글을 다시 클릭하는날이 오겠네욤
1 rhddnfl 2020.05.19 18:08  
많은공부가 되네요