Проблема в старых версиях скорее всего связана со SWITCH, у которых есть аж 2 вспомогательных таблицы:
Code: Select all
004268D2 cmp eax, 0000009F
004268D7 jnbe 0042B2D6 ↓
004268DD mov al, [eax+004268EA]
004268E3 jmp dword ptr [eax*4+0042698A]
Первая лежит по адресу 004268EA и представляет из себя массив байт:
Code: Select all
.text:004268EA byte_4268EA db 3Bh, 3Ah, 39h, 38h ; DATA XREF: sub_426834+A9r
.text:004268EA db 37h, 36h, 35h, 34h ; indirect table for switch statement
.text:004268EA db 33h, 32h, 31h, 30h
.text:004268EA db 2Fh, 2Eh, 2Dh, 2Ch
.text:004268EA db 2Bh, 2Ah, 29h, 28h
.text:004268EA db 27h, 26h, 25h, 24h
.text:004268EA db 23h, 22h, 21h, 20h
.text:004268EA db 1Fh, 1Eh, 1Dh, 1Ch
.text:004268EA db 1Bh, 1Ah, 19h, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 18h, 0, 17h
.text:004268EA db 16h, 15h, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 14h, 0Bh
.text:004268EA db 13h, 12h, 11h, 10h
.text:004268EA db 0Fh, 0Eh, 0Dh, 0Ch
.text:004268EA db 0Bh, 0Ah, 9, 8
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 0, 0, 0
.text:004268EA db 0, 7, 6, 5
.text:004268EA db 4, 3, 2, 1
Вторая по адресу 0042698A - это уже таблица с адресами:
Code: Select all
.text:0042698A off_42698A dd offset loc_42B2D6, offset loc_42AF18, offset loc_42ADA9
.text:0042698A ; DATA XREF: sub_426834+AFr
.text:0042698A dd offset loc_42AD43, offset loc_42AB0C, offset loc_42AAC6 ; jump table for switch statement
.text:0042698A dd offset loc_42A8D6, offset loc_42A5EF, offset loc_42A5C4
.text:0042698A dd offset loc_42A227, offset loc_42A15E, offset loc_428E0F
.text:0042698A dd offset loc_42A056, offset loc_429FDA, offset loc_429E5E
.text:0042698A dd offset loc_429CD9, offset loc_42972A, offset loc_429301
.text:0042698A dd offset loc_429220, offset loc_4291D5, offset loc_428DE2
.text:0042698A dd offset loc_428DA6, offset loc_428D4C, offset loc_428A72
.text:0042698A dd offset loc_4286A4, offset loc_428687, offset loc_428526
.text:0042698A dd offset loc_4284EA, offset loc_42846D, offset loc_4283F5
.text:0042698A dd offset loc_4282C5, offset loc_428252, offset loc_4280F0
.text:0042698A dd offset loc_4280D5, offset loc_428090, offset loc_427FBD
.text:0042698A dd offset loc_427F78, offset loc_427A26, offset loc_4279FD
.text:0042698A dd offset loc_4279DA, offset loc_4279AA, offset loc_427970
.text:0042698A dd offset loc_427930, offset loc_427869, offset loc_427798
.text:0042698A dd offset loc_427719, offset loc_42751E, offset loc_427406
.text:0042698A dd offset loc_427320, offset loc_427161, offset loc_427082
.text:0042698A dd offset loc_426B3D, offset loc_426B21, offset loc_426B05
.text:0042698A dd offset loc_426AE9, offset loc_426ACD, offset loc_426AB1
.text:0042698A dd offset loc_426A90, offset loc_426A7F, offset loc_42B2D6
Старая версия такое не умело парсить, поэтому количество адресов во второй таблице определялось эвристически, что могло приводить к дизассемблированию совершенно "левых" адресов.