В общем, подумал я, что
15.317 байт этого
ASM.COM можно прочитать в
IDA, -
собственно, не так уж и много...
Но сразу насторожило, что в коде не видно ассемблерных мнемоник
WINHex-ом.
При запуске через отладчик выяснилось, что
ASM.COM шифрован через
XOR некоей
неизвестной ни мне, ни
File Analyzerу утилитой "
XOR v 0.03b by ICO 20-feb-1995 95".
Причем зашифрован он оказался дважды - во второй раз после
XOR сигнатуру
"
XOR v 0.03b by ICO 20-feb-1995 95" отрезали вручную.
Далее оказалось, что и это еще не всё, еще какой-то "манипулятор" приделан.
Я выполнил часть кода этого манипулятора вручную - он жульничал со стеком
и патчил точку входа в код - после чего выяснилось, что:
Но ни
UNP.EXE, ни
PKUNLITE.EXE не смогли его распаковать...
Пришлось через
UNP.EXE превратить
ASM.COM в
ASM.EXE.
И только после этого
PKUNLITE.EXE с ним справился:
| | |
| Quote: File Name: ASM.EXE File Date: 16 Feb 2018 File Size: 144956 File type: MZ-EXE. Old-style DOS executable file Processed: Compiled by Turbo C 1988, 1990 or Borland C++ 1991 (type 2) (for .EXE files)Extension: DOS executable file | |
| | |
Я, конечно, подставил
IDA прокрутить эти
144956 Байт, поскольку внутри обнаружилось порядка
115000 нулевых байт, но результат меня не обнадёжил...
Если кому интересен развернутый
ASM.COM в виде
ASM.EXE в оригинале, то вот он:
Как
ZIP нули-то хорошо плющит! С
144956 до
14195 Байт!
Ну и если кому интересно, что же делал
XOR v 0.03b by ICO 20-feb-1995 95 - то вот что:
Код дешифратора XOR v 0.03b | | |
| Code: 29AF:401D 54 PUSH SP 29AF:401E 50 PUSH AX 29AF:401F 53 PUSH BX 29AF:4020 51 PUSH CX 29AF:4021 52 PUSH DX 29AF:4022 1E PUSH DS 29AF:4023 06 PUSH ES 29AF:4024 B91A3F MOV CX,3F1A 29AF:4027 0E PUSH CS 29AF:4028 07 POP ES 29AF:4029 BF0301 MOV DI,0103 29AF:402C BD5562 MOV BP,6255 29AF:402F BE1936 MOV SI,3619 29AF:4032 BB0100 MOV BX,0001 29AF:4035 8BC3 MOV AX,BX 29AF:4037 F7E5 MUL BP 29AF:4039 03C1 ADD AX,CX 29AF:403B 8BD8 MOV BX,AX 29AF:403D 26 ES: 29AF:403E 3005 XOR [DI],AL 29AF:4040 47 INC DI 29AF:4041 E2F2 LOOP 4035 29AF:4043 BE0301 MOV SI,0103 29AF:4046 BF0001 MOV DI,0100 29AF:4049 8BEF MOV BP,DI 29AF:404B B91A3F MOV CX,3F1A 29AF:404E FC CLD 29AF:404F AC LODSB 29AF:4050 AA STOSB 29AF:4051 E2FC LOOP 404F 29AF:4053 07 POP ES 29AF:4054 1F POP DS 29AF:4055 5A POP DX 29AF:4056 59 POP CX 29AF:4057 5B POP BX 29AF:4058 58 POP AX 29AF:4059 5C POP SP 29AF:405A FFE5 JMP BP
29AF:405C DB ' XOR v 0.03b by ICO 20-feb-1995 95'
29AF:407E 54 PUSH SP 29AF:407F 50 PUSH AX 29AF:4080 53 PUSH BX 29AF:4081 51 PUSH CX 29AF:4082 52 PUSH DX 29AF:4083 1E PUSH DS 29AF:4084 06 PUSH ES 29AF:4085 B97B3F MOV CX,3F7B 29AF:4088 0E PUSH CS 29AF:4089 07 POP ES 29AF:408A BF0301 MOV DI,0103; начало 29AF:408D BD5562 MOV BP,6255 - 29AF:4090 BE1936 MOV SI,3619 29AF:4093 BB0100 MOV BX,0001
29AF:4096 8BC3 MOV AX,BX 29AF:4098 F7E5 MUL BP 29AF:409A 03C1 ADD AX,CX 29AF:409C 8BD8 MOV BX,AX 29AF:409E 26 ES: 29AF:409F 3005 XOR [DI],AL 29AF:40A1 47 INC DI 29AF:40A2 E2F2 LOOP 4096
29AF:40A4 BE0301 MOV SI,0103 29AF:40A7 BF0001 MOV DI,0100 29AF:40AA 8BEF MOV BP,DI 29AF:40AC B97B3F MOV CX,3F7; 29AF:40AF FC CLD
29AF:40B0 AC LODSB 29AF:40B1 AA STOSB 29AF:40B2 E2FC LOOP 40B0
29AF:40B4 07 POP ES 29AF:40B5 1F POP DS 29AF:40B6 5A POP DX 29AF:40B7 59 POP CX 29AF:40B8 5B POP BX 29AF:40B9 58 POP AX 29AF:40BA 5C POP SP 29AF:40BB FFE5 JMP BP; 100 | |
| | |