Поиск ошибки в дизассемблированной проге.
Идой создал ассемблерный файл, поправил, как надо, оттранслировал, слинковал — получил экзешник.
Затыкается, вернее выскакивает из проги без всяких сообщениий, не доходя до main:
из _start вызывается __cinit, а она обращается к __initterm, которая и падает. Может, у кого есть идеи на этот счет?
Привожу кусок дизассемблированного файла, с которого начинает работать прога с помеченным местом, где она обламывается.
_start proc near
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset unk_4400E8
push offset unknown_libname_1 ; Microsoft VisualC 2-8/net runtime
mov eax, fs:0
push eax
mov fs:0, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov [ebp+var_18], esp
call ds:GetVersion
xor edx, edx
mov dl, ah
mov dword_461294, edx
mov ecx, eax
and ecx, 0FFh
mov dword_461290, ecx
shl ecx, 8
add ecx, edx
mov dword_46128C, ecx
shr eax, 10h
mov dword_461288, eax
call __heap_init
test eax, eax
jnz short loc_42A33A
push 1Ch
call __amsg_exit_0
; ---------------------------------------------------------------------------
add esp, 4
loc_42A33A:
mov [ebp+var_4], 0
call __ioinit
call ___initmbctable
call ds:GetCommandLineA
mov dword_463928, eax
call ___crtGetEnvironmentStringsA
mov dword_4612D0, eax
test eax, eax
jz short loc_42A36D
mov eax, dword_463928
test eax, eax
jnz short loc_42A377
loc_42A36D:
push 0FFFFFFFFh ; Code
call _exit_0
; ---------------------------------------------------------------------------
add esp, 4
loc_42A377:
call j____setargv
call __setenvp
call __cinit ;!!!!!!!!!здесь выскакивает!!!!!!!!!
mov eax, eenvp
mov dword_4612A8, eax
push eax ; envp
mov eax, aargv
push eax ; argv
mov ecx, aargc
push ecx ; argc
call _main
.......................
.......................
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить