Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 02:59   #1
ZahAlex
Пользователь
 
Регистрация: 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?
В чём ошибка?
После изучения ассемблера стал мозг зависать...
ZahAlex вне форума Ответить с цитированием
Старый 04.06.2009, 08:19   #2
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Есть фунуция GetLastError или отладчик. Может неправильная очередность параметров в стеке...
Д'якон вне форума Ответить с цитированием
Старый 04.06.2009, 12:10   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 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
MalCer вне форума Ответить с цитированием
Старый 05.06.2009, 13:44   #4
mc-black
Пользователь
 
Аватар для mc-black
 
Регистрация: 03.06.2009
Сообщений: 26
По умолчанию

Параметры через стек переданы в правильном порядке, значение первого параметра (NULL, 0) тоже верное.

Ошибка вероятно в том, что автор трактует значения констант IDI_APPLICATION и IDC_ARROW равные в обоих случаях 32512d, но использует их ошибочно как шестнадцатиричные: 32512h.

Если вы в отладчике / дизассемблере исправляете образ PE-файла в памяти, то запомните, что там мало что отображается в десятичном виде. Отладчик понимает константы как шестнадцатиричные значения - отсюда и ошибка.
mc-black вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите что нетак при работе с LoadIcon CrazyProgramer Помощь студентам 6 01.08.2008 00:09