다시 오신 것을 환영합니다.
이전 비디오에서는 x64dbg를 사용하여 중단점, 즉 이 네 개의 중단점을 설정하고 덤프 1, 2, 3에서 VirtualAlloc을
계속 밟고 따라간 다음 실행하여 VirtualProtect를 쳤습니다.
거기서 멈췄습니다.
이제 가상 보호에서 계속하여 가상 보호에 대해 알아보겠습니다.
모든 매개변수를 스택으로 점프하고 점프하여 VirtualProtect 호출에 도달할 때까지 밀어 넣습니다.
이제 매개 변수를 살펴봅니다.
두 번째 매개변수에서는 이 메모리 영역에 대한 Zloader의 권한을 변경하는 것을 확인할 수 있습니다.
6F8 뒤에 0 세 개를 입력합니다.
따라서 4번 덤프에서 이를 따라갈 수 있습니다.
마우스 오른쪽 버튼을 클릭한 후
덤프에서 팔로우합니다.
이제 여기를 마우스 오른쪽 버튼으로 클릭하고 메모리 맵에서 따라갈 수 있습니다.
그리고 이것이 DLL이 로드되고 있는 메모리 영역임을 알 수 있습니다. 이 시점에서는 포장 풀기가 완료되었을 수 있으며,
따라서 VirtualAlloc이 완료된 것입니다.
우리는 세 번이나 성공했습니다.
이제 사용자 코드로 이동하겠습니다.
여기로 돌아올 때까지 한 걸음 더 나아가겠습니다.
따라서 여기서 이 리턴을 넘어가면 사용자 코드로 돌아갑니다.
그러니 이쪽으로 오세요.
위로 스크롤하면 포장을 풀고 있는 통화입니다.
이제 우리는 여기까지 왔고, 이제 다음은 압축을 푼 코드로 넘어갈 것입니다.
일반적으로 멀웨어에서는 어떤 레지스터로 이동하거나 이동하는 점프가 있습니다.
이 경우 여기에서는 레지스터로 이동하지 않습니다.
대신 에필로그에서 변칙을 사용합니다.
우리는 점프할 일종의 주소를 찾을 것이고, 그 주소는 압축을 푼 코드에 대한 포인터가
될 것입니다.
이제 우리는 계속해서 넘어갈 것입니다.
따라서 기본적으로 이것을 탐색할 때는 이 내용을 따라 각 항목을 덤프해야 합니다.
시간이 좀 걸릴 수도 있습니다.
시간을 절약할 수 있도록 도와드리겠습니다.
이미 이 작업을 수행해 본 결과 이것이 바로 그 방법이라는 것을 알게 되었습니다.
따라서 확실하지 않은 경우 이 모든 항목에 대해 수행합니다.
이제 이 항목을 마우스 오른쪽 버튼으로 클릭하고 4번 덤프를 따라가겠습니다.
따라서 현재 덤프에 값을 더한 6617을 입력하면 MZ 헤더가 있는 것을 볼 수 있습니다.
이제 이걸 버릴 수 있습니다.
여기서 첫 번째 16진수를 선택한 다음 아래로 스크롤하여 이 메모리 영역의 끝을 선택합니다.
먼저 이것을 클릭한 다음 맨 아래까지 스크롤하여 끝을 찾습니다.
끝은 여기 어딘가에 있습니다.
하단으로 스크롤하면 하단에는 아무것도 없습니다.
이제 조금 더 올라가 보겠습니다. 조금 위로 이동하려면 여기를 클릭하세요.
그리고 이걸 드래그하세요. 하단에 아무것도 없는지 확인합니다.
덤프하려는 파일을 최대한 작게 만들려고 노력합니다.
자, 여기까지 왔습니다.
가능한 한 가장 작은 영역을 확보하세요.
그런 다음 덤프하고 싶습니다.
자, 여기까지입니다.
조금 더 내려가세요.
여분의 공백을 두세요.
알겠습니다.
좋은 수치인 것 같습니다.
99999999.
따라서 Shift 키를 길게 누르면 됩니다.
Shift 키를 길게 누르고 있는 것을 잊지 마세요.
그런 다음 Shift 키를 누른 상태에서 여기를 클릭합니다.
이제 파일의 헤더 오른쪽부터 하단까지 전체 메모리 영역을 선택하고 추가
패딩을 추가했습니다.
이제 이것을 마우스 오른쪽 버튼으로 클릭한 다음 바이너리 및 파일에 저장을 클릭할 수 있습니다.
이제 데스크톱으로 이동하여 Zloader 폴더에 저장합니다.
Zloader_dump라고 부르겠습니다. bin.
저장을 클릭합니다.
이제 x64dbg를 최소화하고 Zloader를 확인합니다.
약 185KB입니다.
이제 이 작업을 완료했습니다.
다음 동영상에서 분석을 계속 이어가겠습니다.
시청해 주셔서 감사합니다.