본문 바로가기

My Study/Reversing

WriteProcessMemory Anti Reversing

정보처리기사 실기 시험을 공부해야하는데... 책을 피니.. 키보드를 치고 싶어서 글이나 뜨적뜨적 적으렵니다..ㅠ

이것만 얼른 쓰고 모니터를 꺼버려야겠네요 ㅋㅋ


===================================================

샘플 코드는 초 간단입니다.


WriteProcessMemory 함수를 호출하면서 nop문자를 int 3 부분에 덮어 씌우는 코드입니다.


무슨 안티 리버싱 기법일까요?

디버거 상에서 트레이스를 방해하기 위한 방법입니다.


보통 프로세스에서 int 3을 만나면 Attach가 되어있는 디버거한테 제어가 이동되게 됩니다.

하지만 이를 무력화 시키고 코드가 자유롭게 쭉 실행되버립니다.


WriteProcessMemory 호출하는 부분에서 F8을 딱 누르면 갑자기 "success!" 가 호출되면서 프로그램이 종료될 것 입니다.


실습은 알아서! :D


CreateFile과 ReadFile을 사용해 위와 똑같은 효과를 낼 수 있습니다. 코드는... 필요없으시리라.. 믿습니다 . 쿨럭; ㅠ


아 ~ 그리고 .text 섹션을 Write하는 과정이기 때문에 .text 섹션에 IMAGE_SCN_MEM_WRITE(0x80000000) 플래그를 넣어야합니다. Hex Editor로 바이너리를 수정해도 되지만 컴파일러에 있는 링커에서 옵션을 지정해주면 됩니다.



이렇게... ㅎㅎ

셤 공부.. ㅠ