본문 바로가기

reversing13

[Reversing] UPX packing & unpacking 이번 실습의 내용은 32bit notepad를 UPX로 패킹하고 이를 디버거를 통해 패킹을 푸는 것이다. 이 실습에서 사용할 패커는 제목에서 알 수 있듯 UPX이다. 우선 UPX를 패킹하기 위해서는 아래 사이트에서 UPX를 다운받아야 한다. https://github.com/upx/upx/releases/tag/v3.96 Release UPX 3.96 · upx/upx Please see the file NEWS for a detailed list of changes. Note: all versions are functionally equivalent, i.e. each version can handle all executable formats, so you only need the file that r.. 2020. 10. 26.
[Wargame_Dreamhack] rev-basic-4 보호되어 있는 글 입니다. 2020. 10. 13.
[Reversing] IAT와 EAT 로딩 과정 IAT 로딩 과정 DLL이란? Dynamic Link Library, 동적링크로 실행파일에서 해당 라이브러리 기능을 사용시에만 참조해 기능을 호출할 수 있는 방법이다. 여러 프로세스에서 공유하며 쓰는 라이브러리로 멀티태스킹 환경에서 각 프로세스마다 라이브러리를 갖고 그 용량을 차지하는 것보다 메모리에 한 번 로딩시켜 프로세스마다 공유시키면 메모리를 더 효율적을 사용할 수 있다. IAT란? Import Address Table, 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하는지에 대해 적은 테이블이다. 이는 Implicit Linking에 대한 메커니즘을 제공하는 역할로 프로그램이 시작할 때 같이 로딩되어 종료할 때 메모리에서 해제된다. IAT는 PE 파일이 어떤 라이브러리를 import하고 있는지에 .. 2020. 10. 13.
[Wargame_Dreamhack] rev-basic-5 보호되어 있는 글 입니다. 2020. 10. 13.
[Reversing] 어셈블리어 C로 변환하기 #2 주어진 어셈블리어 main의 명령은 0으로 초기화를 한 변수 3개를 선언하는 것이다. int a, b, c = 0; main에서 L2로 점프하므로 아래 명령으로 이동한다. 그럼 [rbp-12]의 값과 9를 비교하는데 [rbp-12]는 c이다. jle는 만약 앞의 값이 뒤의 값보다 작거나 같으면 점프하라는 의미다. 그러므로 if문을 사용해 표현할 수 있다. 그런데 C언어에서는 jle를 으로 표현해야 한다고 한다. * http://blog.naver.com/PostView.nhn?blogId=67sooon&logNo=10166748134 if (c > 9) c는 9보다 작음으로 조건에 만족해 L5로 점프하게 된다. eax에 c를 넣어 0으로 만든 다음 cdq를 이용해 eax와 edx를 확장한다. 그리고 sh.. 2020. 9. 22.
[Wargame_Dreamhack] rev-basic-3 보호되어 있는 글 입니다. 2020. 9. 22.