|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.06.2009, 02:59 | #1 |
Пользователь
Регистрация: 08.04.2009
Сообщений: 45
|
LoadIcon и LoadCursor не фунциклируют
00401000 push 0
00401002 call <jmp.&kernel32.GetModuleHandleA> 00401007 mov dword ptr ds:[403076],eax 0040100C mov dword ptr ds:[403020],3 00401016 mov dword ptr ds:[403024],0 00401020 mov dword ptr ds:[403028],0 0040102A mov dword ptr ds:[40302C],0 00401034 mov dword ptr ds:[403030],eax 00401039 push 32512 (IDI_APPLICATION) 0040103E push 0 00401040 call <jmp.&user32.LoadIconA> 00401045 mov dword ptr ds:[403034],eax 0040104A push 32512 (IDC_ARROW) 0040104F push 0 00401051 call <jmp.&user32.LoadCursorA> 00401056 mov dword ptr ds:[403038],eax 0040105B mov dword ptr ds:[40303C],6 00401065 mov dword ptr ds:[403040],0 Правильно ли всё почему EAX=0 после LoadIcon и LoadCursor? В чём ошибка?
После изучения ассемблера стал мозг зависать...
|
04.06.2009, 08:19 | #2 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
Есть фунуция GetLastError или отладчик. Может неправильная очередность параметров в стеке...
|
04.06.2009, 12:10 | #3 |
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
Открыл первую попавшуюся программу
0040104F |. 6A 64 PUSH 64 ; /RsrcName = 100. 00401051 |. 50 PUSH EAX ; |hInst => 00400000 00401052 |. E8 D1030000 CALL <JMP.&USER32.LoadIconA> ; \LoadIconA Вот что мне показал отладчик. Если я не ошибаюсь, то у вас (может быть!), как писал Д'якон - неправильная очередность параметров в стеке
xor eax, eax
xchg [eax], eax |
05.06.2009, 13:44 | #4 |
Пользователь
Регистрация: 03.06.2009
Сообщений: 26
|
Параметры через стек переданы в правильном порядке, значение первого параметра (NULL, 0) тоже верное.
Ошибка вероятно в том, что автор трактует значения констант IDI_APPLICATION и IDC_ARROW равные в обоих случаях 32512d, но использует их ошибочно как шестнадцатиричные: 32512h. Если вы в отладчике / дизассемблере исправляете образ PE-файла в памяти, то запомните, что там мало что отображается в десятичном виде. Отладчик понимает константы как шестнадцатиричные значения - отсюда и ошибка. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подскажите что нетак при работе с LoadIcon | CrazyProgramer | Помощь студентам | 6 | 01.08.2008 00:09 |