![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 08.04.2009
Сообщений: 45
|
![]()
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? В чём ошибка?
После изучения ассемблера стал мозг зависать...
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
![]()
Есть фунуция GetLastError или отладчик. Может неправильная очередность параметров в стеке...
|
![]() |
![]() |
![]() |
#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 |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 03.06.2009
Сообщений: 26
|
![]()
Параметры через стек переданы в правильном порядке, значение первого параметра (NULL, 0) тоже верное.
Ошибка вероятно в том, что автор трактует значения констант IDI_APPLICATION и IDC_ARROW равные в обоих случаях 32512d, но использует их ошибочно как шестнадцатиричные: 32512h. Если вы в отладчике / дизассемблере исправляете образ PE-файла в памяти, то запомните, что там мало что отображается в десятичном виде. Отладчик понимает константы как шестнадцатиричные значения - отсюда и ошибка. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подскажите что нетак при работе с LoadIcon | CrazyProgramer | Помощь студентам | 6 | 01.08.2008 00:09 |