보안/리버싱 썸네일형 리스트형 3. 기본 ASM 기본 ASM 필수적인 부분인데 GDB를 이용하여 리턴 어드레스를 찾고, 쉘코드를 작성할 때 등등 반드시 알고 있어야 하는 부분이다. GDBGNU 디버거로 gnu 소프트웨어 시스템을 위한 기본 디버거인데 GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성 있는 디버거로써 여러 프로그래밍 언어를 지원하는 디버거이다. 리턴 어드레스리턴 어드레스란 다음에 실행해야하는 명령이 위치한 메모리 주소로써 ret 부분이 자신이 원하는 명령이 들어가 있는 메모리의 주소로 덮어쓴다면 자신이 원하는 명령을 수행 할 수 있고 간단한 예시로 쉘을 실행시키는 코드를 메모리 어딘가에 지정해놓은 후 그 주소를 ret 부분에 써지도록 하면 함수 종료 후에 쉘을 실행시키는 코드가 실행이 된다. 쉘코드쉘코드(Shellcode) 는 시.. 2. 메모리와 세그먼트 그리고 레지스터 * 이 글은 처음 접하는 사람을 위한 글입니다. 개인적인 견해가 많으니 주의하시기 바랍니다.오류가 있거나 다른 의견이 있으신 분은 메일로 보내주시고 댓글을 달아주시길 바랍니다. 양해 부탁드립니다 메모리 메모리의 기본 단위는 1byte이다. 메모리에서 각 byte는 메모리 주소의 고유 숫자가 붙어 있다. 주 소 0 1 2 3 4 5 6 7 메모리 2A 45 B8 20 8F CD 12 2E word = 2 바이트 , double word = 4바이트 , quad word = 8 바이트 , paragraph = 16 바이트로 메모리의 모든 데이터는 숫자로 되어 있는데문자들은 숫자를 문자로 맵핑하는 문자 코드로 저장이 된다. 유명한 ASCII(American Standard Code for Information.. 1. 어셈블리어 기초 ( 수의 체계 ) * 이 글은 처음 접하는 사람을 위한 글입니다. 개인적인 견해가 많으니 주의하시기 바랍니다.오류가 있거나 다른 의견이 있으신 분은 메일로 보내주시고 댓글을 달아주시길 바랍니다. 양해 부탁드립니다 어셈블리어란 어셈블리어란 저수준(low-level)의 프로그래밍 언어이다. 어셈블리어는 컴퓨터의 작동 원리를 이해하는데 도움이 되기 때문에 배운다.저수준과 고수준이 있는데 저수준은 기계와 가까운 언어이고 고수준은 사람과 가까운 언어이다. 기계와 가깝다는 것은 사람이 알기 힘들고 기계에게 더 친숙하다는것이고 고수준은 사람이 프로그래밍을 할 때 좀 더 쉬운 언어라는 것이다.한마디로 기계어는 사람이 해석하기엔 어려운 부분이 많다. 일단 먼저 가장 기본적으로 알아야 할 십진수와 이진수와 16진수를 알아보겠다. 십진수(D.. 이전 1 다음