히어로 나이츠 MOD 분석

홈 > 안드로이드 > 안드로이드
안드로이드

히어로 나이츠 MOD 분석

4 제라프 41 9659 4

타 해외포럼의 자료를 가져와 원본과 비교하여 분석을 해보는 작업을 하였습니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581005034_3395.PNG
 

사진을 보시면 1. 보석 사용시 감소X 2. 돈 사용시 감소X 3. 부활포인트 감소X 가 패치된 모드입니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581005581_7266.PNG
 

그 후 간단하게 알집으로 확인한 결과 따로 보안 모듈을 장착하지 않은듯 하여 바로 HXD로 libil2cpp.so 원본 파일과 모드 파일들을 비교해보았습니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581006605_1463.PNG
(1.SO- 원본 | 2.SO- 모드)


HXD 분석에 비교기능을 사용하여 다른 부분을 찾았습니다. 보통 4,8 정도 길이가 되어 4길이씩 구분했습니다. 그리고


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581007106_4846.PNG
 

줄 오프셋과 부분 오프셋을 확인 후 09 00 90 E0 과 09 00 50 E0 을 ARM 코더 사이트에 분석을 돌려보았습니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581007413_4712.PNG
 

원본코드 09 00 50 E0는 SUB(뺴기)를, 모드코드 09 00 90 E0는 ADD(더하기)를. 즉 코드가 실행시 SUB(빼기)가 되어야할 코드를 ADD(더하기)로 패치한 것 입니다.

이 코드만 보고 전부다 파악하기 힘들기 떄문에 SO 파일과 메타데이터를 덤프하여 IDA 오프셋 코드장과 IDA 스크립트를 얻어보도록 하겠습니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581007843_767.PNG
 

덤프 후 IDA에서 스크립트 로드 후 2가지 방법으로 분석이 가능합니다.

1. 오프셋 코드장에서 아까 찾은 오프셋을 검색하여 펑션을 찾는다.

2. IDA 뷰어에서 오프셋 이동 후 확인한다.


첫번째 방법 보다 2번째 방법이 쫌더 효율적 이기때문에 바로 2번째 방법으로 넘어가도록 하겠습니다.

(SO파일 전부다 로드 후 스크립트까지 실행한 상태입니다.)


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581008342_3468.PNG
 

아까전에 찾아 놓았던 오프셋을 점프기능을 통해 찾아간 후 IDA 뷰어로 확인해본 결과


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581008639_1408.PNG
 

DataManager$$useGold 라는 펑션에서 SUB코드가 ADD코드로 변경되었다는 것을 확실히 알게 되었습니다. 그러면 다른 코드도 비슷할테니

DataManager$$use펑션을 이용하여 찾아보았습니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581009120_9256.PNG
5ab9ad34af3c47d1f7e9bf1bbe07b201_1581009123_6726.PNG
 

패치된 SO는 간단히 값 체크 후 차감해주는 부분에서 더하기로 수정을 하였다는것을 알게되었습니다.

이후 차감을 원하지 않는 다른 기능을 찾아 SUB 를 ADD 으로 수정해주시면 정상적으로 작동할 것 입니다.


그 예로 제가 한번 새로운 기능을 추가 해보도록 하겠습니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581010249_2782.PNG
 

DataManager$$useExpStone 펑션에서 위에서 본 사진과 같은 구조를 가지고 있습니다.

SUB 부분을 클릭하시고 Hex 뷰어를 통해 오프셋과 헥스코드를 알아봅니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581010485_0846.PNG
 

오프셋은 0134EB20 헥스코드는 04 00 50 E0 입니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581011286_1396.PNG 


먼저 ARM 코더 사이트에서 SUBS            R0, R0, R4 형식을 복사 해주신 후 ADDS            R0, R0, R4 로 변경 후 컨버팅 합니다.

그러면 헥스 코드 04 00 90 E0 가 나옵니다.


5ab9ad34af3c47d1f7e9bf1bbe07b201_1581011302_6417.PNG
 

HXD에서 아까 찾아 놓았던 0134EB20 오프셋으로 이동 후 04 00 50 E0 -> 04 00 90 E0 으로 수정해주시면 경험치 스톤 차감X 기능 완성!


이로써 히어로 나이츠 MOD 분석글을 마칩니다.


추신. 처음으로 작성해보는 분석글이라 말투나 언어가 어색할 수 있습니다 ㅠㅠ 양해 부탁드려요!

41 Comments
S Dhhd 2020.02.07 09:52  
오 깔끔하네요
그림에 저렇게 밑줄까지
내가 좀 더 잘해야겠네
S Dhhd 2020.02.07 09:54  
음 추가할점이라면
아이다 단축키들을 설명하는게 좋을것같네요
그나저나 더렇게 그림까지 열심히 하시네요
저도 열심히해여겠네요!
예 아이다 점프기능은 G를누르고 안에 오프셋넣으면됩니다 이렇게하면 초보자가 더알기쉽겠네요
그림에 저렇게 정성을...
4 제라프 2020.02.07 18:05  
아 단축키 까지는 생각을 못했네요 다음부터는 다들 편히 볼수 있도록 적어두도록 하겠습니다~! 그리구 칭찬 감사합니다!
M LIN 2020.02.07 11:24  
와우~! 고생하셨습니다
4 제라프 2020.02.07 18:05  
감사합니다^^
12 모야모야 2020.02.07 11:32  
너무 자세하고 깔끔합니다 앞으로도 잘부탁드려용
4 제라프 2020.02.07 18:05  
좋게 봐주셨다니 감사할 따름입니다!
20 dldldl 2020.02.07 13:19  
좋네요. 수고 하셨어요~ :)
4 제라프 2020.02.07 18:06  
도움이 되셨으면 좋겠네용 감사합니다!
28 사딸라 2020.02.07 15:39  
ㄷㄷㄷ 능력자시군요
4 제라프 2020.02.07 18:08  
에이~ 저두 아직 멀었습니당ㅎㅎ
그래도 칭찬해주셔서 감사합니다!
4 알려주세요오 2020.02.08 10:31  
선추천 후 리딩 여튼 감사글은 개추입니더ㅏ.
4 알려주세요오 2020.02.08 10:56  
datamanager라는 것은 서버사이드에서 클라이언트와 값을 비교하는 클래스로 이루어져있습니다.

클라이언트쪽에서 op코드를 저리바꿔주는건데

문제는 저 op코드를 찾는게 힘든거라

어찌됬건 좋은 분석글 감사합니다.
4 제라프 2020.02.08 11:00  
예전에 짧게 배운 기술로 분석해본지라 저도 아직 갈길이 멀은것 같네요~ 재미있게 읽어주셔서 감사합니다!
1 kimpain 2020.02.09 23:10  
와우 감사합니다. 공부중인데 이것도 보고 한번 공부해보겠습니다.
4 제라프 2020.02.10 17:52  
열공하셔요!
3 배움 2020.02.11 01:08  
이건 정말로 보기 편하게 정리되어 있네요. 감사합니다.
3 VanDussen 2020.02.11 01:42  
와... 이런 분들 참 대단...
1 찰리유 2020.02.16 17:57  
대단하시네요.
3 ch4njun 2020.02.20 20:04  
와 진짜 정성이 묻어나네요.. 좋은글 감사합니다 ^^
1 tuanbeo22061 2020.02.21 14:34  
Nice you. Thanks
3 Jaedy 2020.02.28 15:23  
대단하십니다...
2 개미개미 2020.03.07 01:58  
우와... 정말 대단하시네요
1 dhfj 2020.03.20 00:00  
정말 대단하세요 ㄷㄷ
2 뽀야 2020.03.29 22:17  
공부하는데 도움이될듯하네요 감사합니다
7 래바리 2020.04.03 18:27  
감사합니다.
2 살살봉 2020.04.24 21:28  
와우 굿입니다
1 swiftfanboy 2020.04.25 09:12  
Thats really great topic
2 모더쓰 2020.05.16 17:09  
이런 비교분석글 정말 참고하기 좋은거같아요 감사합니다!
1 김사람 2020.11.14 01:55  
대단하십니당
1 쿠랴깅 2020.11.14 08:20  
이거군요 ㅋㅋㅋ
2 매코미 2020.11.19 07:02  
감사합니다
1 럭셜둘리 2020.12.25 22:01  
안녕하세요.
글을 읽다보니 궁금한게 생겼는데요.
그럼 매번 MOD파일이 업데이트 될때마다 기다릴 필요 없이
libil2cpp.so<--이 파일만 MOD파일에서 추출해서 업데이트파일 다운받아서 거기에 넣으면 되는건가요?
4 제라프 2020.12.27 15:58  
그 방법은 추천드리지 않습니다. 호환하는 시스템 버전이 각각 있기 때문에 모드 패치된 so 파일을 그대로 옴겨 사용 하시는 것 보단 수정된 부분을 분석하거나 찾으셔서 직접 패치하는 것을 추천드립니다. 만약 시스템 버전 즉 비트버전이 맞다면 그대로 옴겨 사용해도 무방하나 모더가 암호화를 해놓았을 경우 사용하실 수 없습니다.
1 kimmalguk 2021.01.15 15:03  
감사합니다
1 ililililil 2021.02.20 11:53  
감사합니다~
1 논라쿠 2021.09.10 21:32  
와 좋은자료 고맙습니다
1 이름앖다 2021.10.03 06:33  
어마어마하네요.
1 린린롤롤 2021.10.11 17:59  
와 진짜 대단하시네요
1 더벅더벅 2021.12.21 15:14  
감사합니다

Congratulation! You win the 5 축하드립니다! 당첨되셨어요~!

1 아가토 2022.12.05 00:14  
와......대단하십니다
Category