반응형

전체 글 298

17. 실행 파일에서 .reloc 섹션 제거하기

Reloc 섹션 설명Base Relocation Table은 PE 파일에서 하드코딩된 주소의 위치를 알려주는 정보로, 실행 파일(EXE)에서는 큰 영향을 주지 않음. 따라서 reloc 섹션을 제거해도 EXE는 정상적으로 실행될 수 있음.reloc 섹션은 보통 VC++에서 생성된 PE 파일의 마지막에 위치하며, 이 섹션을 제거하면 파일 크기가 약간 줄어듦PEView나 Hex editor를 사용해 쉽게 제거 가능   Reloc 섹션 제거 작업 단계.reloc 섹션 헤더 정리.reloc 섹션 헤더의 파일 오프셋을 찾아서, Hex editor를 사용해 해당 부분을 0으로 덮어씌움.reloc 섹션 제거.reloc 섹션의 시작 옵셋을 찾아, 해당 부분부터 파일 끝까지 삭제이 단계에서 물리적으로 섹션을 제거할 수 있..

16. Base Relcoation Table

PE 재배치(PE Relocation)PE 재배치란?PE(Portable Executable) 파일이 원래 로딩되기를 기대하는 기본 주소인 ImageBase에 로딩되지 못하고, 다른 주소에 로딩될 때 발생하는 작업을 의미함  DLL/SYS 파일에서의 PE 재배치DLL/SYS 파일: 예를 들어, TEST.EXE 프로세스에 A.DLL이 10000000 주소에 로딩된 상태에서 B.DLL이 동일한 주소로 로딩되려고 할 때, PE 로더는 충돌을 피하기 위해 B.DLL을 다른 비어있는 주소에 로딩함. EXE 파일에서의 PE 재배치EXE 파일: 실행될 때마다 랜덤한 주소에 로딩되며, 이 과정에서 재배치가 발생할 수 있음. 이는 보안을 위한 ASLR(Address Space Layout Randomization)의 일..

15. UPX 실행 압축된 notepad 디버깅

010073B2: GetModuleHandleA() API 호출 후 notepad.exe 프로세스의 ImageBase구함010073B4, 010073C0: MZ와 PE 시그니처 비교    notepad_upx.exe의 EP Code0101533060PUSHAD01015331BE 00100101MOV ESI, 0101100010153368DBE 0000FFFFLEA EDI, DWORD PTR DS: [ESI+FFFF0000]  PUSHAD 명령어: EAX~EDI 레지스터를 스택에 저장ESI/EDI 설정:ESI: 두 번째 섹션 시작 주소 (01011000)EDI: 첫 번째 섹션 시작 주소 (01001000)첫 번째 섹션: 메모리에서만 존재, 압축 해제된 원본 파일의 코드가 저장될 장소예상 동작:ESI가 가리..

14. 실행 압축

데이터 압축어떤 형태의 파일이든 내부는 바이너리로 되어 있음 -> 압축 알고리즘을 사용해 크기를 줄일 수 있음비손실 압축압축 파일 100% 복원 가능보관 및 이동에 용이하도록 하려는 목적으로 사용7-zip, 빵집과 같은 프로그램 이용Run-Length, Lempel-Ziv, Huffman 알고리즘손실 압축압축 파일 100% 복원 불가압축률을 높이는 목적멀티미디어 파일들(jpg, mp3, mp4)에서 대부분 사용   실행 압축실행(PE: Portable Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술실행 압축된 파일도 PE파일, 내부에 원본 PE파일과 decoding루틴 존재. EP코드에 decoding루틴이 ..

[SuNiNaTas(써니나타스)] Write up - 21번

http://suninatas.com/challenge/web21/web21.asp Game 21What is a Solution Key? Is it a Puzzle?suninatas.com 사진하나 준다..이미지를 다운로드했다.뚫어져라 보면 보이긴하느데 중간에가 안보임. Hxd에 넣어보았다. 시그니처는 이상이 없음  근데 중간에 jpg시그니처가 하나 더있음.. 하나에 사진에 두개 이미지 넣은건가해서 쪼개보기로 함. 이런식으로 여러 이미지로 쪼개진다.. H4CC3R_IN_TH3_MIDD33_4TT4CK

[SuNiNaTas(써니나타스)] Write up - 11번

http://suninatas.com/challenge/web11/web11.asp Game 11 suninatas.com 요즘 리버싱에 맛들려서 푸는 중임 키를 찾아야된다. 디버거에서 열어봐야겠다. 이뮤니티 디버거 사용했습니다.  함수 넘겨보면서 congratulation나오는 부분을 발견함.MOV 명령어로 문자열을 쌓아둔다음에 합치는걸 볼 수 있다. 2VB6H1XS0F 라는 문자열을 입력해보자.2abbe4b681aae92244536ca0e32fa0de

[프로그래머스/C++] PCCE 기출문제

1번/ 문자출력#include using namespace std;int main(void) { string message = "Let's go!"; cout  줄바꿈을 해야해서 \n을 넣어서 출력했다 중간에     2번/각도 합치기 #include using namespace std;int main(void) { int angle1; int angle2; cin >> angle1 >> angle2; int sum_angle = (angle1 + angle2)%360; cout  mod 360연산이 필요해서 나머지 연산을 넣어서 했다.   3번/ 수 나누기#include using namespace std;int main(void) { int number..

코딩해요/C++ 2024.10.08
반응형