이번에는 튜토리얼 6의 포인터에서 좀 더 심화된 다중포인터문제이다.

뭐 이것도 6하고 똑같이 change value누르면 값 막 바뀌고 change pointer하면 포인터가 가리키는 위치가 바뀐다.

또한, 저 값을 5000으로 만들으면 클리어한댄다.

언제나처럼 저 value를 찾아서



실행되는 opcode를 살펴보자


esi가 가진 값을 eax에 복ㅋ사 ㅋ함
오프셋 0x18줫으니까 수동으로 테이블세팅할때 적어줘야함



난 여기서 엄청헤맷는데 accesses로 find out 해주면 이 포인터를 가리키는 포인터를 또 찾을 수 있었음 ㅡㅡ



그러므로!

수동 추가된 포인터를 accesses로 find out 해준다.

그리고 아까와 마찬가지로 change value가 실행될때의 opcode 살펴보면 포인터의 위치로 또또 포인터가 가리키는걸 볼 수 이씀...

ㅋ...

이 지랄발광을 한 3,4번??해주다보면


초록색으로 address가 표현되어있을거임 더이상 포인터를 안파도됨 ㅠㅠ

이것으로 끝없을것같았던 포인터여정은끝났다

이제 값을 바꾸고 클리어를 해버리자


엉엉


체인지 포인터 -> NEXT



이게 좆같은 튜토리얼은 다 끝이났네여 ㅎㅎ














Posted by extr

댓글을 달아 주세요

  1. 핫산 2015.10.22 20:39 Address Modify/Delete Reply

    고맙다 강좌 너의, 빈다 행복 너의



 

이번엔 포인터문제..ㅋ

이문제에서 요구하는건 간단하다.

체인지 포인터 버튼을 눌러서 저 값을 5000이상 만드는 것

화면상에 보이는 윈도우로만으로 몇가지 알 수 있는 사실이 존재하는데

먼저 change value를 누르면 상단의 숫자가 무작위로 바뀌게된다는 것과,
change pointer를 누르게되면 value가 변경되며 동시에 3초간의 delay를 받게된다는 것이다.

우선 앞의 튜토리얼과 마찬가지로 변경되는 value를 찾아본다.




value를 찾으면서 change value는 눌러봤겠지만, change pointer를 눌러본 사람은 별로 없을 것이다.

change pointer를 눌러보면 window상의 값은 변경되지만, 치트 테이블에 존재하는 값은 변하지 않는다. 

이는 무엇을 의미하는가 하면 change pointer라는 버튼이 가리키는 주소를 변경시켜버린다는 뜻이다.

그러므로 해당 포인터를 조작하여 값을 조작하여야한다.




체인지 밸류를 눌렀을 때 [edx](00216C98)의 value을 eax에 넣는 것을 볼 수 있다.

이로써 [edx], 즉 00216C98을 value로 하고있는 값을 찾아야하는데



잡았다 요놈!




add address manually 기능을 통해 수동으로 치트테이블에 포인터를 올려놓을 수 있다.




아직도 이해안되는 사람들을 위해.

0057C370 -----> 00216C98 = 991

이렇게 되어있는거고

change pointer를 통해 pointer가 변경된다고했음.

그건 위에 적어준걸로 예를든다면 0057C370이 가리키는 것 즉, 00216C98이 자꾸 바뀐다 이거임.
 



아무튼 5000으로 수정한뒤에 active 눌러서 값 변경안되게 하고나서 체인지 포인터해도되지만

나처럼 멍청하면 체인지포인터누르고 3초되기전에 헐레벌떡 값을 변경할 수 있음ㅋ

active기능 무시 ㄴㄴ ㅠㅠ


여튼 이렇게해서 또 문제를 푸러따
Posted by extr

댓글을 달아 주세요

  1. clarisonic 2013.07.14 02:56 Address Modify/Delete Reply

    좋으면 좋고 싫으면 싫은 거지, 뭐가 이렇게 어렵고 복잡하냐구




이번에는 change value를 클릭해보면 값이 랜덤으로 자꾸 변경이 되는 것을 확인할 수 있다.

값이 바뀌는 루틴을 그냥 없애버리거나, 동작하지 않게 해버리면 next로 넘어갈 수 있음을 추측할 수 있다.

우선 자꾸 바뀌는 저 value부터 찾아본다.



튜토리얼 2,3을 무리없이 진행했다면, 이번에도 무리없이 찾을 수 있을 것이다.

찾았으면 cheat table에 올려놓고 find out what writes to this address 기능을 통해 opcode를 수정할 수가 있다.

또 다른 창이 뜨면 change value를 클릭하여 값이 바뀌는 부분의 opcode를 볼 수 있다.




이 부분을 nop 처리하여 다시한번 change value를 클릭하면 버튼이 enable 됨을 확인할 수 있다.

Posted by extr

댓글을 달아 주세요



이번엔 저기보이는 health value와 ammo value를 둘 다 5000이상 만들면 된다.

이번에도 역시 누르면 값이 까지는데 다만 다른건 value type가 다르다는거다.

health value같은 경우, float type이고 ammo value의 경우, double type임.




value type을 all로 주게되면 double과 float를 동시에 검색할 수 있다.

정석대로 이 튜토리얼이 요구한건 value type을 float와 double로 각각 검색하여 찾는거겠지만

그러긴 너무 귀찮다..

그러므로 버튼 2개를 번갈아가며 누르면서 동시에 decreased value를 이용하여 계속하여 next scan을 해보자

그러다보면




이런식으로 바꿔야 할 value를 볼 수가 있다.

이제 이들을 5000이상으로 조정해주면





버튼이 enable 됨을 알 수 있다.

Posted by extr

댓글을 달아 주세요



밑에까지 쭉 읽어보면 알겠지만

결과적으로 중요한건 Unknown initial value의 4byte형식으로 검색을 해보아야 한다는 것과

progress bar의 value를 5000으로 만드는 것이다.

이전 레벨과 마찬가지로 hit me를 치면 progress value가 랜덤으로 줄어드는 것을 볼 수 있다.

값이 줄어들기 때문에 decreased value by스캔형식도 사용할 필요가 있음을 알 수 있다. 



우선 메모리를 사용하는 모든 value들을 검색해서 천천히 progress value를 찾아볼 것이다.

이후로 몇 백만 건의 value가 검색이 되면, 이전 레벨과 마찬가지로 hit me를 클릭하여 값이 줄어드는 것을 보자.

그 후로 줄어드는 값을 decreased value by 스캔타입으로 검색해본다.



이런식으로 스캔타입을 이용하면 존나 유용하다.



이렇게 progress value를 찾아 낼 수 있었고, 총 4가지가 나오지만 값은 0~500 사잇값이기 때문에 002870DC를 조작하면 된다.


이렇게 조작을 하고 나면


마찬가지로 버튼이 enable 되는 것을 확인할 수 있다.
Posted by extr

댓글을 달아 주세요




밑에 health value를 1000으로 만들랜다.

hit me를 클릭질해보면 값이 줄어드는걸 알 수 있음.

그걸 이용해서 변화하는 값을 보고 value를 찾아내면 됨.


중간에 모르고 클릭해버려서 값이 99로 바껴버림;;

사실 여기서 100이란 값 찾고나서 한번 클릭하고 변화된 값을 입력한 후, next scan해서 value찾아내는게 정석인데

재미없게된듯ㅋ

여튼 저값을 1000으로 변경




ㅇㅇ
그리고 적용하면



버튼이 enable되어 다음 레벨로 갈 수 있다.
Posted by extr

댓글을 달아 주세요