Поиск ошибки в дизассемблированной проге.
От: Drovoseka  
Дата: 23.07.09 17:39
Оценка:
Идой создал ассемблерный файл, поправил, как надо, оттранслировал, слинковал — получил экзешник.
Затыкается, вернее выскакивает из проги без всяких сообщениий, не доходя до 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
.......................
.......................
Re: Поиск ошибки в дизассемблированной проге.
От: Аноним  
Дата: 24.07.09 18:42
Оценка: -2
Здравствуйте, Drovoseka, Вы писали:

D>Идой создал ассемблерный файл, поправил, как надо, оттранслировал, слинковал — получил экзешник.

D>Затыкается, вернее выскакивает из проги без всяких сообщениий, не доходя до main:
D>из _start вызывается __cinit, а она обращается к __initterm, которая и падает. Может, у кого есть идеи на этот счет?
D>Привожу кусок дизассемблированного файла, с которого начинает работать прога с помеченным местом, где она обламывается.
D>_start proc near

не умете реверсить
не занимайтесь ерундой
Re[2]: Поиск ошибки в дизассемблированной проге.
От: Drovoseka  
Дата: 25.07.09 07:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>не умете реверсить

А>не занимайтесь ерундой

Я воспользовался библиотекой msvcrt.lib и у меня все пошло. А своими "дельными" советами можете подтереть одно место. Но думаю, что Вам и это не поможет, господин крутой реверсер.
Re[3]: Поиск ошибки в дизассемблированной проге.
От: Аноним  
Дата: 25.07.09 21:11
Оценка:
Здравствуйте, Drovoseka, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


А>>не умете реверсить

А>>не занимайтесь ерундой

D>Я воспользовался библиотекой msvcrt.lib и у меня все пошло. А своими "дельными" советами можете подтереть одно место. Но думаю, что Вам и это не поможет, господин крутой реверсер.


да
дествительно восстанавливать Startup Stub вижуал сишный который есть в соурсах это токо разве что от большого ума
либо вам заняться нечем

советую начать с вызова самого main или WinMain
а не заниматься ерундой

ps
подотрытесь своими соплями
Re[4]: Поиск ошибки в дизассемблированной проге.
От: Аноним  
Дата: 25.07.09 23:42
Оценка:
Правила форума нарушены.
— оверквотинг. \Да и в целом можно поспокойнее общаться\
Правила можно найти в разделе FAQ данного форума и\или ресурса.
Нарушение правил может повлечь за собой санкции, описанные там же — модератор
А>советую начать с вызова самого main или WinMain
А>а не заниматься ерундой
Я ничего не хочу восстанавливать: просто хочу понять почему я вылетаю, не добравшись до main. Ранее с фортрановским кодом у меня проблем не было.

А>ps

А>подотрытесь своими соплями
Вы первый начали.
Re: Поиск ошибки в дизассемблированной проге.
От: meandr  
Дата: 04.08.09 08:28
Оценка:
Поиск ошибки в дизассемблированной проге.
Товарисч вам все правильно сказал. Это практически невозможно заставить работать ассемблерный листинг выданный идой, тут нужен опыт и МНООООГО терпения, а если спуститься на землю то это вообще невозможно. Попробуйте просто подпатчить то место где нужно исправить в самом готовом экзешнике это и проще и и результативнее.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Поиск ошибки в дизассемблированной проге.
От: Drovoseka  
Дата: 04.08.09 16:44
Оценка:
Здравствуйте, meandr, Вы писали:

M>Поиск ошибки в дизассемблированной проге.

M>Товарисч вам все правильно сказал. Это практически невозможно заставить работать ассемблерный листинг выданный идой, тут нужен опыт и МНООООГО терпения, а если спуститься на землю то это вообще невозможно. Попробуйте просто подпатчить то место где нужно исправить в самом готовом экзешнике это и проще и и результативнее.

Товарисч мне написал, что я не умею реверсить. Т.е., как я понимаю, он реверсить умеет и у него все работает сходу. __cinit инициализирует глобальные функции (инициализация конструкторов для статических классов). Вот мне и надо было с этими классами разобраться. Я и разобрался без "умных" подсказок сего товарисча.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.