기타게임 치트엔진 쓰레드 호출에 알아보자
컨텐츠 정보
- 21 조회
- 0 추천
- 0 비추천
- 목록
본문
작성자: 작성자 없음
안녕하세요 ~~~~
저번에는 치트엔진의 스피드핵에 알아보앗죠???
요번엔 치트엔진의 쓰레드 호출에대해 알아봅시다
(다운로드:http://www.cheatengine.org/ 여기서 받아주세요)
치트엔진을 다운로드받을때 따로 설정을 안해줫다면 C:\Program Files (x86)\Cheat Engine 6.7 이 경로에 저장이 되잇을겁니다
여기서 Cheat engine 을 클릭해주시면됩니다 (정 모르시는분들은 문서 경로창에 C:\Program Files (x86)\Cheat Engine 6.7\cheat engine.exe 쳐주시면 알아서 실행됩니다)
[이미지 링크 만료]
반가운 화면 이네요 ㅎㅎ [이미지 링크 만료] 이 컴퓨타 아이콘을 눌러주신면
[이미지 링크 만료]
이런 화면이 뜹니당 핀볼을 더블클릭하시거나 클릭 후 OPEN 을 눌러주시면 되여
[이미지 링크 만료]
그러면 이런 창이 활성화 되겟져?
여기서 000010bc-Pinball.exe 이 부분에 궁금증을 가질수도 잇는분들께 쓸떼없는 설명해드리겟습니다
(알고계신분들은 밑으로 내려주시면되용)
000010bc 란 해당 프로세스의 PID를 뜻합니다
PID는 프로세스 번호라고 생각하시면되고 PID가 낮을수록 시스템에 중요한 프로세서 높을수록 기본응용프로그램이라 보시면됩니다.
Pinball은뭐 프로세스 이름이겟죠
위의 사진에서 [memory view] 라고 되어잇는 것을 눌러주시면
[이미지 링크 만료]
이런창이 뜨게됩니다
헉 !!! 이게뭐지 너무 복잡하다 하시는 분들은 치트엔진 튜토리얼을 깨보시거나
혹은 구글 네이버 검색을 통해 조그만한 지식이라도 알고 계시면 보기 편합니다
[이미지 링크 만료]
핀볼이네요
여기서 도움말을 누르신뒤
도움말 항목(H)
핀볼정보(A)
이렇게 뜨게 됩니다
핀볼정보를 누르시면
[이미지 링크 만료]
이런 창이 하나 뜨게됩니다
오늘 쓰레드 호출로 이 창을 도움말-핀볼정보 이렇게 마우스로 들어가지않고
호출로 인한 창을 뜨게하는것이 목적입니다
일단 쓰레드에 대해 설명하겟습니다
쓰레드란?
하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델
우리는 일상생활을 하면서 동시에 여러일을 하면서 살고잇는데
프로그램적으로 보면 하나의 프로세서에서 여러개의 작업을 처리할려면
직렬적으로 하면안되겟져? 앞에일을 처리하지못하면 뒤에일이 밀리니까요 ㅎㅎ
그래서 병렬적으로 각각의 작업을 쓰레드로 하며 멀티쓰레드로 처리합니다
대충 이렇다고 보시면되고 이제 이 창이 무슨함수로 호출이 되는지 알아봅시다~
해당 위에 사진을 보니 아이콘이 보이네요
그면 아이콘을 로드하는 함수를 찾아봅시다~
LoadiconA 이 함수가 저 핀볼의 동그란걸 출력해주네요
API 를 잘모르시면 msdn 이나 구글에서 검색하면 여러가지 나옵니다
이제 제대로 시작해볼까요
아까 메모리뷰에 들어간상태에서 먼저 컨트롤+G 를 눌러주시면
[이미지 링크 만료]
윗 사진처럼 Goto Adress 밑에 주소가 나오게됩니다
여기서 사진처럼 loadicona 를 입력해주시고 확인을 누르시면
[이미지 링크 만료]
이런창으로 오게됩니다
이제 여기서 어떻게 하느냐
헣렇렇렇렇 모르겟다 이거야~ 안할란다~~
는 재가힘들어서 하는소리구요
디버깅이란걸 할겁니다
디버깅이 뭐냐 제대로설명안하냐 포인트안준다 ^^
이러실까봐 제대로 설명하겟습니다
디버깅은 프로그램에 문제가 생길때나 오류가 발생할때 어디서 오류가 발생하는지
찾는 기술입니다
해당 시작부터 한라인씩 실행을 합니다
예를들어 설명해봅시다
한 남자가 축구를하는데 공을 오른쪽으로 휘면서 나가게하고싶어서 찻습니다(아웃프론트킥)
어떻게 차야하지 이렇게 고민해보면서 남자는 여러 방법을 시도해봅니다
축구화의 안쪽으로 차면 왼쪽으로 휘고 바깥쪽으로차면 오른쪽으로 휘구나~
이렇게 시행착오를 거치면서 어떻게 고치고 알게되는지 알수잇는것이 디버깅입니다
치트엔진의 도구에서 break point 라는 것은
해당 함수에 호출이 잇을때 그 프로세서의 쓰레드를 멈추게한후 분석하는 것입니다
(이것만 쓰니까 이것만설명할게요 ㅠㅠ)
이제 본론으로 들어갑시다~
해당 함수에 F5(break point) 를 누르고 아까 그 핀볼정보를 클릭하면
[이미지 링크 만료]
이런식으로 프로그램이 멈추면서 쓰레드가 잠시대기하고 프로그램이 멈추게됩니다
복잡하지 않으니 천천히 보시면됩니다
여기서 thread 1150 이란 그냥 쓰레드 넘버입니다
쓰레드도 pid(프로세스번호) 와 마찬가지로 각각 쓰레드의 번호가잇습니다 ㅎㅎ
여기서 막 레지스터 eax esp ebp eip 이게 뭐시냐 하시는분들은
구글에 어셈블리어를 공부하시고 오시면 알기쉽습니다
(쓰레드호출과 관련이 없으므로 패스할게요~)
오른쪽 하단에 보면 무슨 숫자영어섞인 주소가 여러가지 보이는데
[이미지 링크 만료]
순서대로 해당함수가 어느 주소에서 호출됫는지 알려주는 겁니다
01007f62 에서 loadicon을 호출하엿고
74c662fa 가 01007f62 를 호출한것입니다.
쉽게 74c662fa ---> 01007f62 ---> loadicon
이렇게 된것입니다
이건 절대적인 것이 아니며 그냥 이런순서로 간다는것만 알고계시면됩니다.
일단 다시 f5를 눌러 breakpoint를 없애주시구 f9를 누르면 다시 프로그램이 시작됩니다
이제 맨위에잇는 01007f62 클릭클릭하시면
[이미지 링크 만료]
그 주소가 잇는곳으로 이동이됩니다
jmp 부분은 무시해주시고 (리턴어드레스라 그래용 모르시면검색 ㄱㄱ)
call pinball.exe+789a 여기서 어딘가로 가서 이 안의 함수에서 loadicona 를 호출한다는걸 알 수 있습니다.
[이미지 링크 만료]
[이미지 링크 만료]
이 콜부분에서 스페이스나 우클릭 fallow 를 누르시면 pinball.exe+789a 이 주소로 이동이됩니다
(정 모르겟다시는 분들은 컨트롤+G 를 누르셔서 이 주소를 입력하시면 이동합니다)
이 함수에서 loadicona 를 호출하겟져? (없으면 자살각 ㅇㅇ)
밑으로 쭊쭊내리시다보면
[이미지 링크 만료]
하 다행이 잇네요 (loadicona) 너무반갑네요 ㅠㅠ
정말 이 함수가 호출하는게 맞을까??? 의심하시는분들을 위해 한번더 breakpoint를 걸겟습니다
[이미지 링크 만료]
f5를 눌러주신뒤 핀볼정보를 다시 들어가시면 이렇게 디버깅이 걸려서 프로그램이 또 멈추게됩니다
여기서 f5를 다시누른뒤 f9를 눌러서 다시 프로그램을 실행시켜줍시다 ~
01007f62 여기서 당연히 이 주소를 호출햇으니 저주소가 그대로 잇네요
이 주소로 들어가줍시다
[이미지 링크 만료]
그러면 이 주소가 핀볼정보를 출력하는것을 알수잇네요
push pinball.exe+15ec
push esi
push [pinball.exe+28204]
call pinball.exe+789a
이런 명령어가 또 나오게되네요
전에 잇던 스피드핵 명령어랑 되게 비슷하져?
PUSH가 3번잇네요???
고로 이 함수의 인자는 3개의 인자로 실행된다는것을
알수잇습니다 ㅎㅎ
이제 쓰레드를 생성해봅시다
[이미지 링크 만료]
위의 해당주소를 클릭해주시고
Tool ----> createthread 라고 되어잇는걸 누르시면 윗 사진처럼 저렇게 뜨게됩니다
밑에는 해당주소클릭한 주소가 자동으로 입력되잇습니다
OK이를 누르면 이제 thread가 실행되면서 핀볼정보가 뜨겟져? (아마?)
[이미지 링크 만료]
아 성공햇네요 쓰레드 호출에 성공햇습니다 핀볼정보를 누르지않고 이렇게 창이 뜨게되는걸해보앗네요
그리고 쓰레드에 대한 번외 내용도 알려드리겟습니다
이 쓰레드가 호출되면 해당쓰레드가 실행되는게아니라
저희가 만든 쓰레드가 되게 되는데요 쓰레드 번호도 다릅니다
이렇게 되면 게임 쓰레드와 별개의 쓰레드로 실행되는것인데
원래 핀볼정보를 누르면 그 핀볼정보창을 끄지않곤 게임을 시작할수가 없는데요
이렇게 쓰레드 호출로 실행된 핀볼정보는 게임과 같이 연동되어 할수잇게됩니다
이건 말보다 영상으로 보시는게 보기좋을거같아서 영상을 첨부해드리겟습니다
bandicam 2017-12-24 23-07-53-748.avi
bandicam 2017-12-24 21-45-33-668.avi
이상으로 치트엔진 쓰레드 호출을 마치며
^----^
봐주셔서 감사합니다 O(ㅡ)O ~
(이거 쓰는데 1시간걸림 실화???)
-
등록일 00:20
-
등록일 08.20
-
등록일 08.10VMware 네트워크 IP 설정댓글 2
-
등록일 08.08