본문 바로가기

리버스 코드 엔지니어링5

[리버스 엔지니어링] 함수 호출 규약 정리 함수 호출 규약이란?- 함수를 호출하는 방식에 대한 약속을 의미합니다.- 인자를 전달하는 방식과 함수 종료시 스택 공간을 정리하는 방법에 따라 달라집니다. cdecl- 인자 전달 순서 : 오른쪽에서 왼쪽- 인자 전달 매체 : 스택- Stack Frame 정리 : Caller호출한 main()에서 스택을 정리하는걸 확인 할 수 있습니다. C/C++에서의 표준 함수 호출규약으로, Caller가 인자를 정리하는 규약이며 가변인자를 사용할 수 있습니다.(printf와 같이 긴 인자를 사용할 수 있습니다.) stdcall- 인자 전달 순서 : 오른쪽에서 왼쪽- 인자 전달 매체 : 스택- Stack Frame 정리 : Callee호출당한 add()에서 스택을 정리하는걸 확인 할 수 있습니다.return 8을 통해 .. 2018. 11. 14.
[리버스 엔지니어링] CPU 레지스터 레지스터 : CPU 내부에 존재하는 다목적 저장공간 vs 일반적인 메모리(RAM) : 레지스터가 속도가 훨씬 빠르다. 레지스터를 알아야 하는 이유 어셈블리어의 대부분이 레지스터를 조작하는 것이기에 레지스터의 용도의 내용을 이해 해야한다. 가장 기초가 되는 Register = Basic program execution registers General Purpose Register (32bit - 8개) Segment Register (16Bit - 6개) Program Status and Control Register (32Bit - 1개) Instruction Pointer(32Bit - 1개) General Purpose Register EAX : Accumulator for operands and r.. 2018. 11. 14.
[리버스 엔지니어링] 바이트 오더링 컴퓨터에서 메모리에 데이터를 저장하는 방식을 의미하는 바이트 오더링의 리틀 엔디언 표기법과 빅엔디언 표기법에 대해서 알아보겠습니다. 우선 바이트 오더링이란? 데이터가 바이트 단위로 메모리에 저장되는 순서를 의미하며 각 CPU 벤더 의존적인 특징을 가지고 있다. 바이트 오더링의 종류에는 크게 리틀 엔디엔 표기법과 빅 엔디언 표기법이 존재합니다. 위 그림를 보시면 쉽게 이해하실수 있으실겁니다. 바이트 타입의 변수에 저장할 경우 두 방식의 차이는 없습니다. 하지만 2바이트 이상의 크기를 가진 자료형을 저장할 때부터 차이가 나타납니다. 빅 엔디언 방식은 데이터를 저장할 때 사람이 보는 방식과 동일하게 앞에서부터 순차적으로 저장합니다. 그러나 리틀 엔디엔 방식은 데이터를 저장할 때 역순으로 저장하는 것입니다. 리.. 2018. 10. 31.
[리버스 엔지니어링] OllyDbg 간단한 사용법 디버깅 툴을 사용하기 전에 먼저 알아야 할 내용이 있습니다. 디버그를 통해 나오는 어셈블리 언어는 CPU에 종속되어 있습니다. 즉 일반 PC에서 많이 사용되는 intel x86 계열 CPU와 모바일 제품에서 많이 사용되는 ARM 계열의 CPU는 서로 어셈블리 명령어의 형태가 다릅니다. 위 사진은 OllyDBG의 기본 화면입니다. OllyDbg는 무료에, 직관적인 인터페이스와 확장 기능을 통해 많은 사랑을 받고 있는 디버거 입니다. 위 화면에서 나오는 Code Window/Register Window/Dump Window/Stack Window가 존재하는데 Code Window 기본적으로 디스어셈블리 코드를 표시하여 각종 커멘트나 라벨을 보여주며, 코드를 분석하여 Loop, Jump 위치 등의 정보를 표시.. 2018. 10. 30.
[리버스 엔지니어링] 리버스 엔지니어링이란? 지금까지 리버스 엔지니어링에 대해 수박 겉핡기씩으로 공부 해왔지만 이번 기회에 제대로 공부해보고자 하여 리버스 엔지니어링에 대해 공부한 내용을 공유하고자 합니다.제가 주로 공부하는데 참고하는 책은 "리버싱 핵심 원리"라는 서적이며 그 외에도 인터넷 서칭을 통해 더 많은 내용을 찾아 공부하려고 합니다. 게시글을 보시고 질문이나 지적할 내용이 있다면 댓글로 달아주시면 감사하겠습니다. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 제가 처음으로 리버스 엔지니어링에 대해 알게 된건 대학교 1학년 시절 어떠한 롤 전적 검색 사이트에 롤 전.. 2018. 10. 30.
반응형