1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
| UPX1:000000013FE23B20 public start
UPX1:000000013FE23B20 start proc near
UPX1:000000013FE23B20 push rbx
UPX1:000000013FE23B21 push rsi
UPX1:000000013FE23B22 push rdi
UPX1:000000013FE23B23 push rbp
UPX1:000000013FE23B24 lea rsi, upx1_obuf ; rsi指向upx1的VA 即压缩后的数据obuf
UPX1:000000013FE23B2B lea rdi, [rsi-0AAC000h] ; rdi指向upx0的VA
UPX1:000000013FE23B32 push rdi
UPX1:000000013FE23B33 xor ebx, ebx
UPX1:000000013FE23B35 xor ecx, ecx
UPX1:000000013FE23B37 or rbp, 0FFFFFFFFFFFFFFFFh
UPX1:000000013FE23B3B call loader_stub ; 栈参数rdi指向upx0的VA
UPX1:000000013FE23B3B start endp ; sp-analysis failed ; 寄存器
UPX1:000000013FE23B3B ; ebx=0
UPX1:000000013FE23B3B ; ecx=0
UPX1:000000013FE23B3B ; rsi指向upx1的VA 即压缩后的数据obuf
UPX1:000000013FE23B3B ; cld让方向标志位DF=0,std让DF=1
UPX1:000000013FE23B40
UPX1:000000013FE23B40 ; =============== S U B R O U T I N E =======================================
UPX1:000000013FE23B40
UPX1:000000013FE23B40 ; ebx左移1位如果为0
UPX1:000000013FE23B40 ; 取esi处的Dword给ebx
UPX1:000000013FE23B40 ; rsi减-4
UPX1:000000013FE23B40 ; ebx带进位左移1位
UPX1:000000013FE23B40 ; 从rsi处取1个字节给dl
UPX1:000000013FE23B40
UPX1:000000013FE23B40 get_ebx2_if0_rsi4ebx_rsi5dl proc near
UPX1:000000013FE23B40 add ebx, ebx
UPX1:000000013FE23B42 jz short loc_13FE23B46
UPX1:000000013FE23B44 rep retn
UPX1:000000013FE23B46 ; ---------------------------------------------------------------------------
UPX1:000000013FE23B46
UPX1:000000013FE23B46 loc_13FE23B46: ; CODE XREF: get_ebx2_if0_rsi4ebx_rsi5dl+2↑j
UPX1:000000013FE23B46 mov ebx, [rsi]
UPX1:000000013FE23B48 sub rsi, 0FFFFFFFFFFFFFFFCh
UPX1:000000013FE23B4C adc ebx, ebx
UPX1:000000013FE23B4E mov dl, [rsi]
UPX1:000000013FE23B50 rep retn
UPX1:000000013FE23B50 get_ebx2_if0_rsi4ebx_rsi5dl endp
UPX1:000000013FE23B50
UPX1:000000013FE23B52
UPX1:000000013FE23B52 ; =============== S U B R O U T I N E =======================================
UPX1:000000013FE23B52
UPX1:000000013FE23B52 ; 从rdi+rbp处开始复制ecx个字节到rdi处
UPX1:000000013FE23B52
UPX1:000000013FE23B52 copy2_rdi_from_rdirbp_ecx proc near ; CODE XREF: loader_stub+A3↓p
UPX1:000000013FE23B52 lea rax, [rdi+rbp]
UPX1:000000013FE23B56 cmp ecx, 5
UPX1:000000013FE23B59 mov dl, [rax]
UPX1:000000013FE23B5B jbe short loc_13FE23B7E
UPX1:000000013FE23B5D cmp rbp, 0FFFFFFFFFFFFFFFCh
UPX1:000000013FE23B61 ja short loc_13FE23B7E
UPX1:000000013FE23B63 sub ecx, 4
UPX1:000000013FE23B66
UPX1:000000013FE23B66 loc_13FE23B66: ; CODE XREF: copy2_rdi_from_rdirbp_ecx+23↓j
UPX1:000000013FE23B66 mov edx, [rax]
UPX1:000000013FE23B68 add rax, 4
UPX1:000000013FE23B6C sub ecx, 4
UPX1:000000013FE23B6F mov [rdi], edx
UPX1:000000013FE23B71 lea rdi, [rdi+4]
UPX1:000000013FE23B75 jnb short loc_13FE23B66
UPX1:000000013FE23B77 add ecx, 4
UPX1:000000013FE23B7A mov dl, [rax]
UPX1:000000013FE23B7C jz short locret_13FE23B8E
UPX1:000000013FE23B7E
UPX1:000000013FE23B7E loc_13FE23B7E: ; CODE XREF: copy2_rdi_from_rdirbp_ecx+9↑j
UPX1:000000013FE23B7E ; copy2_rdi_from_rdirbp_ecx+F↑j ...
UPX1:000000013FE23B7E inc rax
UPX1:000000013FE23B81 mov [rdi], dl
UPX1:000000013FE23B83 sub ecx, 1
UPX1:000000013FE23B86 mov dl, [rax]
UPX1:000000013FE23B88 lea rdi, [rdi+1]
UPX1:000000013FE23B8C jnz short loc_13FE23B7E
UPX1:000000013FE23B8E
UPX1:000000013FE23B8E locret_13FE23B8E: ; CODE XREF: copy2_rdi_from_rdirbp_ecx+2A↑j
UPX1:000000013FE23B8E rep retn
UPX1:000000013FE23B8E copy2_rdi_from_rdirbp_ecx endp
UPX1:000000013FE23B8E
UPX1:000000013FE23B90
UPX1:000000013FE23B90 ; =============== S U B R O U T I N E =======================================
UPX1:000000013FE23B90
UPX1:000000013FE23B90 ; 栈参数rdi指向upx0的VA
UPX1:000000013FE23B90 ; 寄存器
UPX1:000000013FE23B90 ; ebx=0
UPX1:000000013FE23B90 ; ecx=0
UPX1:000000013FE23B90 ; rsi指向upx1的VA 即压缩后的数据obuf
UPX1:000000013FE23B90
UPX1:000000013FE23B90 loader_stub proc near ; CODE XREF: start+1B↑p
UPX1:000000013FE23B90
UPX1:000000013FE23B90 var_50 = byte ptr -50h
UPX1:000000013FE23B90 arg_0 = byte ptr 8
UPX1:000000013FE23B90
UPX1:000000013FE23B90 get_ebx2_if0_rsi4ebx_rsi5dl = r11
UPX1:000000013FE23B90 cld
UPX1:000000013FE23B91 pop get_ebx2_if0_rsi4ebx_rsi5dl ; 返回地址 0x140053B40
UPX1:000000013FE23B93 jmp short loc_13FE23B9D
UPX1:000000013FE23B95 ; ---------------------------------------------------------------------------
UPX1:000000013FE23B95
UPX1:000000013FE23B95 loc_13FE23B95: ; CODE XREF: loader_stub:loc_13FE23BAD↓j
UPX1:000000013FE23B95 inc rsi
UPX1:000000013FE23B98 mov [rdi], dl ; 复制dl中的1字节数据到rdi指向的upx0
UPX1:000000013FE23B9A inc rdi ; rsi、rdi指向下一个待处理数据
UPX1:000000013FE23B9D
UPX1:000000013FE23B9D loc_13FE23B9D: ; CODE XREF: loader_stub+3↑j
UPX1:000000013FE23B9D ; loader_stub+A8↓j
UPX1:000000013FE23B9D mov dl, [rsi]
UPX1:000000013FE23B9F add ebx, ebx ; 如果ebx不是0,从rsi处取1字节到dl,ebx左移1位
UPX1:000000013FE23BA1 jnz short loc_13FE23BAD ; ebx不是0跳转
UPX1:000000013FE23BA3 mov ebx, [rsi] ; 如果ebx是0,重新从rsi处取Dword到ebx
UPX1:000000013FE23BA5 sub rsi, 0FFFFFFFFFFFFFFFCh ; rsi减-4
UPX1:000000013FE23BA9 adc ebx, ebx ; ebx带进位左移1位
UPX1:000000013FE23BAB mov dl, [rsi] ; 从rsi处取1字节到dl
UPX1:000000013FE23BAD
UPX1:000000013FE23BAD loc_13FE23BAD: ; CODE XREF: loader_stub+11↑j
UPX1:000000013FE23BAD jb short loc_13FE23B95 ; 判断CF进位标志位,为1时跳转
UPX1:000000013FE23BAF lea eax, [rcx+1]
UPX1:000000013FE23BB2 jmp short loc_13FE23BBB
UPX1:000000013FE23BB4 ; ---------------------------------------------------------------------------
UPX1:000000013FE23BB4
UPX1:000000013FE23BB4 loc_13FE23BB4: ; CODE XREF: loader_stub:loc_13FE23BCE↓j
UPX1:000000013FE23BB4 dec eax
UPX1:000000013FE23BB6 call get_ebx2_if0_rsi4ebx_rsi5dl
UPX1:000000013FE23BB9 adc eax, eax
UPX1:000000013FE23BBB
UPX1:000000013FE23BBB loc_13FE23BBB: ; CODE XREF: loader_stub+22↑j
UPX1:000000013FE23BBB call get_ebx2_if0_rsi4ebx_rsi5dl
UPX1:000000013FE23BBE adc eax, eax
UPX1:000000013FE23BC0 add ebx, ebx
UPX1:000000013FE23BC2 jnz short loc_13FE23BCE
UPX1:000000013FE23BC4 mov ebx, [rsi]
UPX1:000000013FE23BC6 sub rsi, 0FFFFFFFFFFFFFFFCh
UPX1:000000013FE23BCA adc ebx, ebx
UPX1:000000013FE23BCC mov dl, [rsi]
UPX1:000000013FE23BCE
UPX1:000000013FE23BCE loc_13FE23BCE: ; CODE XREF: loader_stub+32↑j
UPX1:000000013FE23BCE jnb short loc_13FE23BB4
UPX1:000000013FE23BD0 sub eax, 3
UPX1:000000013FE23BD3 jb short loc_13FE23BEE
UPX1:000000013FE23BD5 shl eax, 8
UPX1:000000013FE23BD8 movzx edx, dl
UPX1:000000013FE23BDB or eax, edx
UPX1:000000013FE23BDD inc rsi
UPX1:000000013FE23BE0 xor eax, 0FFFFFFFFh
UPX1:000000013FE23BE3 jz short loc_13FE23C3D ; 区块数据解压完成,准备开始处理导入表、重定位表等
UPX1:000000013FE23BE5 sar eax, 1
UPX1:000000013FE23BE7 movsxd rbp, eax
UPX1:000000013FE23BEA jb short loc_13FE23C24
UPX1:000000013FE23BEC jmp short loc_13FE23BFC
UPX1:000000013FE23BEE ; ---------------------------------------------------------------------------
UPX1:000000013FE23BEE
UPX1:000000013FE23BEE loc_13FE23BEE: ; CODE XREF: loader_stub+43↑j
UPX1:000000013FE23BEE add ebx, ebx
UPX1:000000013FE23BF0 jnz short loc_13FE23BFA
UPX1:000000013FE23BF2 mov ebx, [rsi]
UPX1:000000013FE23BF4 sub rsi, 0FFFFFFFFFFFFFFFCh
UPX1:000000013FE23BF8 adc ebx, ebx
UPX1:000000013FE23BFA
UPX1:000000013FE23BFA loc_13FE23BFA: ; CODE XREF: loader_stub+60↑j
UPX1:000000013FE23BFA jb short loc_13FE23C24
UPX1:000000013FE23BFC
UPX1:000000013FE23BFC loc_13FE23BFC: ; CODE XREF: loader_stub+5C↑j
UPX1:000000013FE23BFC inc ecx
UPX1:000000013FE23BFE add ebx, ebx
UPX1:000000013FE23C00 jnz short loc_13FE23C0A
UPX1:000000013FE23C02 mov ebx, [rsi]
UPX1:000000013FE23C04 sub rsi, 0FFFFFFFFFFFFFFFCh
UPX1:000000013FE23C08 adc ebx, ebx
UPX1:000000013FE23C0A
UPX1:000000013FE23C0A loc_13FE23C0A: ; CODE XREF: loader_stub+70↑j
UPX1:000000013FE23C0A jb short loc_13FE23C24
UPX1:000000013FE23C0C
UPX1:000000013FE23C0C loc_13FE23C0C: ; CODE XREF: loader_stub:loc_13FE23C1D↓j
UPX1:000000013FE23C0C call get_ebx2_if0_rsi4ebx_rsi5dl
UPX1:000000013FE23C0F adc ecx, ecx
UPX1:000000013FE23C11 add ebx, ebx
UPX1:000000013FE23C13 jnz short loc_13FE23C1D
UPX1:000000013FE23C15 mov ebx, [rsi]
UPX1:000000013FE23C17 sub rsi, 0FFFFFFFFFFFFFFFCh
UPX1:000000013FE23C1B adc ebx, ebx
UPX1:000000013FE23C1D
UPX1:000000013FE23C1D loc_13FE23C1D: ; CODE XREF: loader_stub+83↑j
UPX1:000000013FE23C1D jnb short loc_13FE23C0C
UPX1:000000013FE23C1F add ecx, 2
UPX1:000000013FE23C22 jmp short loc_13FE23C29
UPX1:000000013FE23C24 ; ---------------------------------------------------------------------------
UPX1:000000013FE23C24
UPX1:000000013FE23C24 loc_13FE23C24: ; CODE XREF: loader_stub+5A↑j
UPX1:000000013FE23C24 ; loader_stub:loc_13FE23BFA↑j ...
UPX1:000000013FE23C24 call get_ebx2_if0_rsi4ebx_rsi5dl
UPX1:000000013FE23C27 adc ecx, ecx
UPX1:000000013FE23C29
UPX1:000000013FE23C29 loc_13FE23C29: ; CODE XREF: loader_stub+92↑j
UPX1:000000013FE23C29 cmp rbp, 0FFFFFFFFFFFFFB00h
UPX1:000000013FE23C30 adc ecx, 2
UPX1:000000013FE23C33 call copy2_rdi_from_rdirbp_ecx ; 从rdi+rbp处开始复制ecx个字节到rdi处
UPX1:000000013FE23C38 jmp loc_13FE23B9D
UPX1:000000013FE23C3D ; ---------------------------------------------------------------------------
UPX1:000000013FE23C3D
UPX1:000000013FE23C3D loc_13FE23C3D: ; CODE XREF: loader_stub+53↑j
UPX1:000000013FE23C3D pop rsi
UPX1:000000013FE23C3E sub rsp, 28h
UPX1:000000013FE23C42 lea rdi, [rsi+0C3C000h] ; rdi指向要恢复的导入表数组oimport
UPX1:000000013FE23C49
UPX1:000000013FE23C49 loc_13FE23C49: ; CODE XREF: loader_stub+E0↓j
UPX1:000000013FE23C49 mov eax, [rdi] ; dll名称rva,0表示dll结束
UPX1:000000013FE23C4B or eax, eax
UPX1:000000013FE23C4D jz short loc_13FE23CA5 ; 完成原exe的iat的初始化
UPX1:000000013FE23C4F mov ebx, [rdi+4] ; iat的rva
UPX1:000000013FE23C52 lea rcx, [rax+rsi+0C5BBE4h] ; 获得dll名称
UPX1:000000013FE23C5A add rbx, rsi ; iat的va
UPX1:000000013FE23C5D add rdi, 8
UPX1:000000013FE23C61 call large qword ptr cs:13FE2CD38h ; kernel32_LoadLibraryA
UPX1:000000013FE23C67 xchg rax, rbp ; 将dll句柄保存到rbp
UPX1:000000013FE23C69
UPX1:000000013FE23C69 loc_13FE23C69: ; CODE XREF: loader_stub+10D↓j
UPX1:000000013FE23C69 mov al, [rdi] ; 取之后函数的类型
UPX1:000000013FE23C69 ; 1表示之后是dll函数名称
UPX1:000000013FE23C69 ; 0xff之后函数序号
UPX1:000000013FE23C69 ; 0xfe之后kernel32的函数名称rva
UPX1:000000013FE23C6B inc rdi
UPX1:000000013FE23C6E or al, al
UPX1:000000013FE23C70 jz short loc_13FE23C49 ; 类型为0,表示函数结束
UPX1:000000013FE23C72 jns short loc_13FE23C7E
UPX1:000000013FE23C74 movzx rdx, word ptr [rdi] ; rdx=函数序号
UPX1:000000013FE23C78 add rdi, 2
UPX1:000000013FE23C7C jmp short loc_13FE23C88 ; rcx=dll句柄
UPX1:000000013FE23C7E ; ---------------------------------------------------------------------------
UPX1:000000013FE23C7E
UPX1:000000013FE23C7E loc_13FE23C7E: ; CODE XREF: loader_stub+E2↑j
UPX1:000000013FE23C7E mov rcx, rdi
UPX1:000000013FE23C81 mov rdx, rdi
UPX1:000000013FE23C84 dec eax
UPX1:000000013FE23C86 repne scasb ; rdx=函数名称
UPX1:000000013FE23C88
UPX1:000000013FE23C88 loc_13FE23C88: ; CODE XREF: loader_stub+EC↑j
UPX1:000000013FE23C88 mov rcx, rbp ; rcx=dll句柄
UPX1:000000013FE23C8B call large qword ptr cs:13FE2CD48h ; kernel32_GetProcAddress
UPX1:000000013FE23C91 or rax, rax ; 函数地址
UPX1:000000013FE23C94 jz short loc_13FE23C9F ; 获取函数地址失败,则程序退出
UPX1:000000013FE23C96 mov [rbx], rax ; 保存iat
UPX1:000000013FE23C99 add rbx, 8
UPX1:000000013FE23C9D jmp short loc_13FE23C69 ; 取之后函数的类型
UPX1:000000013FE23C9D ; 1表示之后是dll函数名称
UPX1:000000013FE23C9D ; 0xff之后函数序号
UPX1:000000013FE23C9D ; 0xfe之后kernel32的函数名称rva
UPX1:000000013FE23C9F ; ---------------------------------------------------------------------------
UPX1:000000013FE23C9F
UPX1:000000013FE23C9F loc_13FE23C9F: ; CODE XREF: loader_stub+104↑j
UPX1:000000013FE23C9F jmp large qword ptr cs:13FE2CD40h ; ntdll_RtlExitUserProcess
UPX1:000000013FE23CA5 ; ---------------------------------------------------------------------------
UPX1:000000013FE23CA5
UPX1:000000013FE23CA5 loc_13FE23CA5: ; CODE XREF: loader_stub+BD↑j
UPX1:000000013FE23CA5 add rsp, 28h
UPX1:000000013FE23CA9 add rdi, 4 ; rdi指向处理后的原重定位表orelocs
UPX1:000000013FE23CAD lea rbx, [rsi-4] ; rbx是重定位基址,指向upx0-4
UPX1:000000013FE23CB1
UPX1:000000013FE23CB1 loc_13FE23CB1: ; CODE XREF: loader_stub+13F↓j
UPX1:000000013FE23CB1 xor eax, eax
UPX1:000000013FE23CB3 mov al, [rdi] ; 取1字节的oc
UPX1:000000013FE23CB5 inc rdi
UPX1:000000013FE23CB8 or eax, eax
UPX1:000000013FE23CBA jz short loc_13FE23CE9 ; 0表示处理结束
UPX1:000000013FE23CBC cmp al, 0EFh
UPX1:000000013FE23CBE ja short loc_13FE23CD1 ; oc>=0xF0
UPX1:000000013FE23CC0
UPX1:000000013FE23CC0 loc_13FE23CC0: ; CODE XREF: loader_stub+14F↓j
UPX1:000000013FE23CC0 ; loader_stub+157↓j
UPX1:000000013FE23CC0 add rbx, rax ; rax是相对偏移,rbx为当前需要修复的重定位va
UPX1:000000013FE23CC3 mov rax, [rbx]
UPX1:000000013FE23CC6 bswap rax
UPX1:000000013FE23CC9 add rax, rsi ; rax转化成va
UPX1:000000013FE23CCC mov [rbx], rax
UPX1:000000013FE23CCF jmp short loc_13FE23CB1
UPX1:000000013FE23CD1 ; ---------------------------------------------------------------------------
UPX1:000000013FE23CD1
UPX1:000000013FE23CD1 loc_13FE23CD1: ; CODE XREF: loader_stub+12E↑j
UPX1:000000013FE23CD1 and al, 0Fh ; oc>=0xF0
UPX1:000000013FE23CD3 shl eax, 10h
UPX1:000000013FE23CD6 mov ax, [rdi] ; 再取2字节
UPX1:000000013FE23CD9 add rdi, 2
UPX1:000000013FE23CDD or eax, eax
UPX1:000000013FE23CDF jnz short loc_13FE23CC0 ; rax是相对偏移,rbx为当前需要修复的重定位va
UPX1:000000013FE23CE1 mov eax, [rdi] ; 刚取的2字节为0,说明后4字节为真实偏移
UPX1:000000013FE23CE3 add rdi, 4
UPX1:000000013FE23CE7 jmp short loc_13FE23CC0 ; rax是相对偏移,rbx为当前需要修复的重定位va
UPX1:000000013FE23CE9 ; ---------------------------------------------------------------------------
UPX1:000000013FE23CE9
UPX1:000000013FE23CE9 loc_13FE23CE9: ; CODE XREF: loader_stub+12A↑j
UPX1:000000013FE23CE9 mov rbp, large cs:13FE2CD50h ; kernel32_VirtualProtect
UPX1:000000013FE23CF0 lea rdi, [rsi-1000h]
UPX1:000000013FE23CF7 mov ebx, 1000h
UPX1:000000013FE23CFC push rax
UPX1:000000013FE23CFD mov r9, rsp ; 保存原保护方式
UPX1:000000013FE23D00 mov r8d, 4 ; 保护方式 4 PAGE_READWRITE
UPX1:000000013FE23D06 mov rdx, rbx ; 大小
UPX1:000000013FE23D09 mov rcx, rdi ; 起始地址
UPX1:000000013FE23D0C sub rsp, 20h
UPX1:000000013FE23D10 call rbp ; kernel32_VirtualProtect
UPX1:000000013FE23D12 lea rax, [rdi+247h]
UPX1:000000013FE23D19 and byte ptr [rax], 7Fh ; 去除upx0区段的可写属性
UPX1:000000013FE23D1C and byte ptr [rax+28h], 7Fh ; 去除upx1区段的可写属性
UPX1:000000013FE23D20 lea r9, [rsp+18h+arg_0]
UPX1:000000013FE23D25 mov r8, [r9] ; 恢复原保护方式
UPX1:000000013FE23D28 mov rdx, rbx
UPX1:000000013FE23D2B mov rcx, rdi
UPX1:000000013FE23D2E call rbp ; kernel32_VirtualProtect
UPX1:000000013FE23D30 add rsp, 28h
UPX1:000000013FE23D34 pop rbp
UPX1:000000013FE23D35 pop rdi
UPX1:000000013FE23D36 pop rsi
UPX1:000000013FE23D37 pop rbx
UPX1:000000013FE23D38 lea rax, [rsp-30h+var_50]
UPX1:000000013FE23D3D
UPX1:000000013FE23D3D loc_13FE23D3D: ; CODE XREF: loader_stub+1B2↓j
UPX1:000000013FE23D3D push 0 ; 平衡栈
UPX1:000000013FE23D3F cmp rsp, rax
UPX1:000000013FE23D42 jnz short loc_13FE23D3D ; 平衡栈
UPX1:000000013FE23D44 sub rsp, 0FFFFFFFFFFFFFF80h
UPX1:000000013FE23D48 jmp oep_real ; 壳代码执行完毕,跳转到原oep继续执行
UPX1:000000013FE23D48 loader_stub endp ; sp-analysis failed
|