MichaelFarthing wrote:
The disassembler looks OK to me and the call mnemonics in particular correctly decode the machine coding:
i.e. .data:00000011 e8 cd 08 call 0x000008e1
is correct
e8 is the opcode for a relative call (16 bit)
0x08cd is the displacement to the call address from the next instruction (at 00000014)
0x0014+0x08cd = 0x08e1 as in the decoding you have.
Perhaps more likely that you have not correctly got the memory at the call locations?
But seriously, it's going to be a long job. This interrupt does a lot of work in lots of sub functions and is likely 16 bit all the way
Tried set base address in disassembler with address of int10 handler (0xC5682) instead of 0x0, then got memory locations.
Didn't help, I still get garbage code.
This is the garbage code I got:
Code:
.data:00000000 cc int3
.data:00000001 cc int3
.data:00000002 78 00 js 0x00000004
.data:00000004 00 0e 66 66 add BYTE PTR ds:0x6666,cl
.data:00000008 c6 c7 86 mov bh,0x86
.data:0000000b c6 c6 6e mov dh,0x6e
.data:0000000e 60 pusha
.data:0000000f 00 00 add BYTE PTR [bx+si],al
.data:00000011 f0 60 lock pusha
.data:00000013 60 pusha
.data:00000014 60 pusha
.data:00000015 60 pusha
.data:00000016 60 pusha
.data:00000017 62 66 fe bound sp,DWORD PTR [bp-0x2]
.data:0000001a 00 00 add BYTE PTR [bx+si],al
.data:0000001c 0c 6e or al,0x6e
.data:0000001e ef out dx,ax
.data:0000001f ef out dx,ax
.data:00000020 ed in ax,dx
.data:00000021 6c ins BYTE PTR es:[di],dx
.data:00000022 6c ins BYTE PTR es:[di],dx
.data:00000023 6c ins BYTE PTR es:[di],dx
.data:00000024 6c ins BYTE PTR es:[di],dx
.data:00000025 60 pusha
.data:00000026 00 00 add BYTE PTR [bx+si],al
.data:00000028 c6 (bad)
.data:00000029 e6 f6 out 0xf6,al
.data:0000002b fe (bad)
.data:0000002c de ce fmulp st(6),st
.data:0000002e c6 c6 c6 mov dh,0xc6
.data:00000031 00 00 add BYTE PTR [bx+si],al
.data:00000033 03 86 cc 6c add ax,WORD PTR [bp+0x6ccc]
.data:00000037 6c ins BYTE PTR es:[di],dx
.data:00000038 6c ins BYTE PTR es:[di],dx
.data:00000039 6c ins BYTE PTR es:[di],dx
.data:0000003a 66 c3 ret
.data:0000003c 80 00 00 add BYTE PTR [bx+si],0x0
.data:0000003f fc cld
.data:00000040 66 66 66 7c 60 data32 data32 data32 jl 0x000000a5
.data:00000045 60 pusha
.data:00000046 60 pusha
.data:00000047 f0 00 00 lock add BYTE PTR [bx+si],al
.data:0000004a 07 pop es
.data:0000004b cc int3
.data:0000004c 6c ins BYTE PTR es:[di],dx
.data:0000004d 6c ins BYTE PTR es:[di],dx
.data:0000004e 6c ins BYTE PTR es:[di],dx
.data:0000004f 6d ins WORD PTR es:[di],dx
.data:00000050 6d ins WORD PTR es:[di],dx
.data:00000051 e7 cc out 0xcc,ax
.data:00000053 e0 00 loopne 0x00000055
.data:00000055 0f c6 66 66 67 shufps xmm4,XMMWORD PTR [bp+0x66],0x67
.data:0000005a c6 c6 66 mov dh,0x66
.data:0000005d 6e outs dx,BYTE PTR ds:[si]
.data:0000005e 60 pusha
.data:0000005f 00 00 add BYTE PTR [bx+si],al
.data:00000061 7c c6 jl 0x00000029
.data:00000063 c6 (bad)
.data:00000064 60 pusha
.data:00000065 38 cc cmp ah,cl
.data:00000067 6c ins BYTE PTR es:[di],dx
.data:00000068 67 c0 00 00 rol BYTE PTR [eax],0x0
.data:0000006c 7e 7e jle 0x000000ec
.data:0000006e 5a pop dx
.data:0000006f 18 18 sbb BYTE PTR [bx+si],bl
.data:00000071 18 18 sbb BYTE PTR [bx+si],bl
.data:00000073 18 3c sbb BYTE PTR [si],bh
.data:00000075 00 00 add BYTE PTR [bx+si],al
.data:00000077 0c 6c or al,0x6c
.data:00000079 6c ins BYTE PTR es:[di],dx
.data:0000007a 6c ins BYTE PTR es:[di],dx
.data:0000007b 6c ins BYTE PTR es:[di],dx
.data:0000007c 6c ins BYTE PTR es:[di],dx
.data:0000007d 6c ins BYTE PTR es:[di],dx
.data:0000007e 6c ins BYTE PTR es:[di],dx
.data:0000007f 67 c0 00 00 rol BYTE PTR [eax],0x0
.data:00000083 c6 c6 c6 mov dh,0xc6
.data:00000086 c6 c6 c6 mov dh,0xc6
.data:00000089 6c ins BYTE PTR es:[di],dx
.data:0000008a 38 10 cmp BYTE PTR [bx+si],dl
.data:0000008c 00 00 add BYTE PTR [bx+si],al
.data:0000008e 0c 6c or al,0x6c
.data:00000090 6c ins BYTE PTR es:[di],dx
.data:00000091 6c ins BYTE PTR es:[di],dx
.data:00000092 6d ins WORD PTR es:[di],dx
.data:00000093 6d ins WORD PTR es:[di],dx
.data:00000094 6f outs dx,WORD PTR ds:[si]
.data:00000095 e7 c6 out 0xc6,ax
.data:00000097 c0 00 00 rol BYTE PTR [bx+si],0x0
.data:0000009a c6 c6 6c mov dh,0x6c
.data:0000009d 38 38 cmp BYTE PTR [bx+si],bh
.data:0000009f 38 6c c6 cmp BYTE PTR [si-0x3a],ch
.data:000000a2 c6 00 00 mov BYTE PTR [bx+si],0x0
.data:000000a5 06 push es
.data:000000a6 66 66 66 63 c1 data32 data32 data32 arpl cx,ax
.data:000000ab 81 81 83 c0 00 00 add WORD PTR [bx+di-0x3f7d],0x0
.data:000000b1 fe c6 inc dh
.data:000000b3 8c 18 mov WORD PTR [bx+si],ds
.data:000000b5 30 60 c2 xor BYTE PTR [bx+si-0x3e],ah
.data:000000b8 c6 (bad)
.data:000000b9 fe 00 inc BYTE PTR [bx+si]
.data:000000bb 00 03 add BYTE PTR [bp+di],al
.data:000000bd c3 ret
.data:000000be 03 03 add ax,WORD PTR [bp+di]
.data:000000c0 03 03 add ax,WORD PTR [bp+di]
.data:000000c2 03 03 add ax,WORD PTR [bp+di]
.data:000000c4 03 c0 add ax,ax
.data:000000c6 00 00 add BYTE PTR [bx+si],al
.data:000000c8 80 c0 e0 add al,0xe0
.data:000000cb 70 38 jo 0x00000105
.data:000000cd 1c e6 sbb al,0xe6
.data:000000cf 20 00 and BYTE PTR [bx+si],al
.data:000000d1 00 3c add BYTE PTR [si],bh
.data:000000d3 cc int3
.data:000000d4 cc int3
.data:000000d5 cc int3