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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2023, 10:02   #1
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию InterlockedIncrement не найдена точка входа

Приветствую, прошу помочь с InterlockedIncrement. Пишет что точка входа в процедуру InterlockedIncrement не найдена.

Код:
format PE64 console
entry start
include 'win64ax.inc'

section '.data' data readable writeable
nCount dd 0

section '.code' code readable executable

start:

invoke	InterlockedIncrement, nCount
invoke	ExitProcess, 0

section '.idata' import data readable writeable 

	library	kernel32, 'kernel32.dll'


	import 	kernel32,\ 
			ExitProcess,'ExitProcess',\
			InterlockedIncrement,'InterlockedIncrement'
mikado3333 вне форума Ответить с цитированием
Старый 31.03.2023, 12:22   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А можно подробнее. У вас нету этой функции в kernel32.dll и выскакивает ошибка после запуска программы. Или же у вас выдаёт fasm ошибку при объявлении / вызове функции.

Судя по названию темы у вас первое. Тогда поможет отладчик и поиск в библиотеке данной точки входа (функции по её имени).

ADD: Как вариант можете сделать себе файл со всеми экспортируемыми функциями kernel32.dll. Для этого вот вам самокомпилирующийся файл. Положите его в папку рядом с fasm.exe и перетащите на него нужную библиотеку dll. На выходе получите inc файл для подключения к вашей программе, в котором будут перечислены все функции экспортируемые этой библиотекой.
Вложения
Тип файла: zip export.zip (2.7 Кб, 4 просмотров)

Последний раз редактировалось macomics; 31.03.2023 в 12:38.
macomics вне форума Ответить с цитированием
Старый 31.03.2023, 13:02   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А если вы пишете на ассемблере, тогда зачем вам вызывать эту функцию? Она написана на ассемблере
Просто сделайте то, что она делает сами. Собственно, в С/С++ компилятор вызов этой функции прямо заменяет кодом.
waleri вне форума Ответить с цитированием
Старый 31.03.2023, 22:35   #4
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию

macomics, ошибка выходит при вызове функции.
Попробовал использовать Ваш файл экспорта - разместил рядом с fasm.exe скопировал туда же kernel32.dll. Затем dll перетащил на export, но похоже что то пошло не так
Код:
flat assembler  version 1.73.30  (1048576 kilobytes memory)
PE header signature     = "PE"   17744 17744 
NT header offset        = 0x000000E8 
Optional header offset  = 0x00000100 
Optional header size    = 240 
Number of sections      = 7 
Image base              = 0x00000001 
Export RVA              = 0x00001000 
Section .text           { 0x00001000 , 0x00000400 , 517632 }
Section .rdata          { 0x00080000 , 0x0007EA00 , 208896 }
Section .data           { 0x000B3000 , 0x000B1A00 , 1536 }
Section .pdata          { 0x000B5000 , 0x000B2000 , 22528 }
Section .didat          { 0x000BB000 , 0x000B7800 , 512 }
Section .rsrc           { 0x000BC000 , 0x000B7A00 , 1536 }
Section .reloc          { 0x000BD000 , 0x000B8000 , 1024 }
Base ordinal            1222413132 
Export funcs            1212738691 
Export names            2284094603 
Pointer to functions    0x49000000 
Pointer to names        0x48F04389 
Pointer to ordinals     0x8024848B 
File offset to funcs    0x48FFF400 
File offset to names    0x48F03789 
File offset to ordinals 0x8024788B 
C:\Users\mikado\Desktop\fasm\export.cmd [423]:
			file fName:h+(%-1)*4,4
processed: file 'C:\Users\mikado\Desktop\fasm\kernel32.dll':h+(%-1)*4,4
error: value out of range.
Цитата:
Сообщение от waleri Посмотреть сообщение
А если вы пишете на ассемблере, тогда зачем вам вызывать эту функцию? Она написана на ассемблере
Просто сделайте то, что она делает сами. Собственно, в С/С++ компилятор вызов этой функции прямо заменяет кодом.
Как?
Код:
inc [nCount]
не атомарный вариант.
mikado3333 вне форума Ответить с цитированием
Старый 31.03.2023, 23:13   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

так вы же можете использовать lock
Код:
lock inc [nCount]
Странно. Этот bat-ник нормально работал. Чуть позже посмотрю и исправлю, если в нем глюки.
Но странные значения:
Base ordinal 1222413132
Export funcs 1212738691
Export names 2284094603

ADD: Возможно это 64-битная версия, а этот bat я еще на 32-битной XP создал. Попробую как он переваривает 64-битные библиотеки как до Окон доберусь. Пока у меня Linux и под wine он не хочет работать совсем.

Последний раз редактировалось macomics; 31.03.2023 в 23:18.
macomics вне форума Ответить с цитированием
Старый 01.04.2023, 00:07   #6
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
так вы же можете использовать lock
Код:
lock inc [nCount]
Большое спасибо .


Цитата:
Сообщение от mikado3333 Посмотреть сообщение
macomics, ошибка выходит при вызове функции.
Похоже я был не прав... x64dbg.jpg
mikado3333 вне форума Ответить с цитированием
Старый 01.04.2023, 02:10   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Проверил на Windows 7 x64.
Действительно, kernel32.dll для 64-битных приложений не читается, а вот kernel32.dll для 32-битных приложений нормально считывается. Чуть позже поправлю и будет работать с 64-битными PE файлами.
Вложения
Тип файла: zip kernel32.zip (319.2 Кб, 0 просмотров)
macomics вне форума Ответить с цитированием
Старый 01.04.2023, 12:07   #8
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Обновил export.cmd. Теперь работает нормально с 64-битными библиотеками.

Использовать все так же: Положили в папку рядом с fasm.exe, перетащили на export.cmd нужную .dll библиотеку.
На выходе получаются два файла:
<имя библиотеки>.inc - Подключаемый файл для статической линковки библиотеки к проекту на fasm
<имя библиотеки>.log - Текст, который был выведен в консоль вместе с дополнительной информацией и возможной ошибкой.
Вложения
Тип файла: zip export.zip (3.2 Кб, 1 просмотров)
macomics вне форума Ответить с цитированием
Старый 02.04.2023, 22:39   #9
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Обновил export.cmd. Теперь работает нормально с 64-битными библиотеками.

Использовать все так же: Положили в папку рядом с fasm.exe, перетащили на export.cmd нужную .dll библиотеку.
На выходе получаются два файла:
<имя библиотеки>.inc - Подключаемый файл для статической линковки библиотеки к проекту на fasm
<имя библиотеки>.log - Текст, который был выведен в консоль вместе с дополнительной информацией и возможной ошибкой.
Нет там таких функций ...
Код:
Function 882 	at	0x0003B650 	InitializeSynchronizationBarrier
Function 883 	at	0x000A38C2 	InstallELAMCertificateInfo
Function 884 	at	0x000A3912 	InterlockedFlushSList
Function 885 	at	0x000A394A 	InterlockedPopEntrySList
Function 886 	at	0x000A3986 	InterlockedPushEntrySList
Function 887 	at	0x000A39C2 	InterlockedPushListSList
Function 888 	at	0x000A39FF 	InterlockedPushListSListEx
Function 889 	at	0x0006A7D0 	InvalidateConsoleDIBits
Function 890 	at	0x0003A100 	IsBadCodePtr
macomics, спасибо за батник.
mikado3333 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точка входа не найдена - Visual C++ mouserman Visual C++ 1 06.09.2017 00:08
точка входа в процедуру не найдена... ололошенько Свободное общение 3 15.07.2014 12:35
Не найдена точка входа в DLL, не могу разобраться Ozerich Qt и кроссплатформенное программирование С/С++ 4 21.04.2010 19:46
Точка входа CheckForReadOnlyResource не найдена Goodwin98 Операционные системы общие вопросы 3 03.03.2010 16:51
не найдена точка входа. Черничный Общие вопросы Delphi 17 23.07.2008 11:54