WEBVTT

00:00.440 --> 00:01.310
다시 오신 것을 환영합니다.

00:01.340 --> 00:10.910
이전 비디오에서는 x64dbg를 사용하여 중단점, 즉 이 네 개의 중단점을 설정하고 덤프 1, 2, 3에서 VirtualAlloc을

00:10.910 --> 00:19.160
계속 밟고 따라간 다음 실행하여 VirtualProtect를 쳤습니다.

00:19.700 --> 00:21.110
거기서 멈췄습니다.

00:21.110 --> 00:26.450
이제 가상 보호에서 계속하여 가상 보호에 대해 알아보겠습니다.

00:28.840 --> 00:39.220
모든 매개변수를 스택으로 점프하고 점프하여 VirtualProtect 호출에 도달할 때까지 밀어 넣습니다.

00:39.580 --> 00:41.750
이제 매개 변수를 살펴봅니다.

00:41.770 --> 00:51.730
두 번째 매개변수에서는 이 메모리 영역에 대한 Zloader의 권한을 변경하는 것을 확인할 수 있습니다.

00:51.880 --> 00:55.330
6F8 뒤에 0 세 개를 입력합니다.

00:55.660 --> 00:58.240
따라서 4번 덤프에서 이를 따라갈 수 있습니다.

00:59.750 --> 01:01.550
마우스 오른쪽 버튼을 클릭한 후

01:02.800 --> 01:04.330
덤프에서 팔로우합니다.

01:05.620 --> 01:09.520
이제 여기를 마우스 오른쪽 버튼으로 클릭하고 메모리 맵에서 따라갈 수 있습니다.

01:11.260 --> 01:18.760
그리고 이것이 DLL이 로드되고 있는 메모리 영역임을 알 수 있습니다. 이 시점에서는 포장 풀기가 완료되었을 수 있으며,

01:18.760 --> 01:24.640
따라서 VirtualAlloc이 완료된 것입니다.

01:24.760 --> 01:27.070
우리는 세 번이나 성공했습니다.

01:28.420 --> 01:31.540
이제 사용자 코드로 이동하겠습니다.

01:31.720 --> 01:33.580
여기로 돌아올 때까지 한 걸음 더 나아가겠습니다.

01:35.550 --> 01:39.600
따라서 여기서 이 리턴을 넘어가면 사용자 코드로 돌아갑니다.

01:40.170 --> 01:43.230
그러니 이쪽으로 오세요.

01:43.980 --> 01:48.840
위로 스크롤하면 포장을 풀고 있는 통화입니다.

01:49.200 --> 01:56.580
이제 우리는 여기까지 왔고, 이제 다음은 압축을 푼 코드로 넘어갈 것입니다.

01:56.820 --> 02:01.760
일반적으로 멀웨어에서는 어떤 레지스터로 이동하거나 이동하는 점프가 있습니다.

02:01.800 --> 02:06.150
이 경우 여기에서는 레지스터로 이동하지 않습니다.

02:06.240 --> 02:09.300
대신 에필로그에서 변칙을 사용합니다.

02:10.410 --> 02:20.670
우리는 점프할 일종의 주소를 찾을 것이고, 그 주소는 압축을 푼 코드에 대한 포인터가

02:20.670 --> 02:22.530
될 것입니다.

02:23.550 --> 02:26.130
이제 우리는 계속해서 넘어갈 것입니다.

02:28.190 --> 02:34.730
따라서 기본적으로 이것을 탐색할 때는 이 내용을 따라 각 항목을 덤프해야 합니다.

02:34.730 --> 02:37.310
시간이 좀 걸릴 수도 있습니다.

02:37.310 --> 02:38.990
시간을 절약할 수 있도록 도와드리겠습니다.

02:39.080 --> 02:42.650
이미 이 작업을 수행해 본 결과 이것이 바로 그 방법이라는 것을 알게 되었습니다.

02:42.950 --> 02:46.880
따라서 확실하지 않은 경우 이 모든 항목에 대해 수행합니다.

02:47.360 --> 02:53.060
이제 이 항목을 마우스 오른쪽 버튼으로 클릭하고 4번 덤프를 따라가겠습니다.

02:53.330 --> 03:02.990
따라서 현재 덤프에 값을 더한 6617을 입력하면 MZ 헤더가 있는 것을 볼 수 있습니다.

03:03.740 --> 03:05.660
이제 이걸 버릴 수 있습니다.

03:06.440 --> 03:14.960
여기서 첫 번째 16진수를 선택한 다음 아래로 스크롤하여 이 메모리 영역의 끝을 선택합니다.

03:16.070 --> 03:20.780
먼저 이것을 클릭한 다음 맨 아래까지 스크롤하여 끝을 찾습니다.

03:22.660 --> 03:24.250
끝은 여기 어딘가에 있습니다.

03:24.250 --> 03:27.460
하단으로 스크롤하면 하단에는 아무것도 없습니다.

03:28.060 --> 03:33.910
이제 조금 더 올라가 보겠습니다. 조금 위로 이동하려면 여기를 클릭하세요.

03:37.060 --> 03:40.600
그리고 이걸 드래그하세요. 하단에 아무것도 없는지 확인합니다.

03:41.410 --> 03:44.680
덤프하려는 파일을 최대한 작게 만들려고 노력합니다.

03:46.720 --> 03:48.250
자, 여기까지 왔습니다.

03:51.010 --> 03:56.920
가능한 한 가장 작은 영역을 확보하세요.

03:57.310 --> 03:58.150
그런 다음 덤프하고 싶습니다.

04:00.580 --> 04:03.940
자, 여기까지입니다.

04:06.130 --> 04:07.070
조금 더 내려가세요.

04:07.090 --> 04:08.710
여분의 공백을 두세요.

04:29.420 --> 04:29.740
알겠습니다.

04:29.750 --> 04:31.190
좋은 수치인 것 같습니다.

04:31.190 --> 04:32.970
99999999.

04:33.020 --> 04:35.810
따라서 Shift 키를 길게 누르면 됩니다.

04:36.450 --> 04:38.450
Shift 키를 길게 누르고 있는 것을 잊지 마세요.

04:39.380 --> 04:42.170
그런 다음 Shift 키를 누른 상태에서 여기를 클릭합니다.

04:42.320 --> 04:49.070
이제 파일의 헤더 오른쪽부터 하단까지 전체 메모리 영역을 선택하고 추가

04:49.070 --> 04:51.380
패딩을 추가했습니다.

04:51.770 --> 04:57.650
이제 이것을 마우스 오른쪽 버튼으로 클릭한 다음 바이너리 및 파일에 저장을 클릭할 수 있습니다.

05:00.670 --> 05:05.560
이제 데스크톱으로 이동하여 Zloader 폴더에 저장합니다.

05:07.500 --> 05:13.800
Zloader_dump라고 부르겠습니다. bin.

05:14.040 --> 05:15.150
저장을 클릭합니다.

05:17.350 --> 05:22.360
이제 x64dbg를 최소화하고 Zloader를 확인합니다.

05:22.690 --> 05:25.990
약 185KB입니다.

05:26.980 --> 05:29.290
이제 이 작업을 완료했습니다.

05:29.500 --> 05:32.920
다음 동영상에서 분석을 계속 이어가겠습니다.

05:32.950 --> 05:34.270
시청해 주셔서 감사합니다.
