HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2451  
Старый 16.06.2018, 10:15
romanblinov2013
Участник форума
Регистрация: 12.10.2016
Сообщений: 212
С нами: 5044008

Репутация: 108
По умолчанию

Добрый день, форумчане. Как найти WINAPI адрес, из которого можно достать размер определённой картинки?



И сразу же добивающий вопрос...

Как узнать, сколько файлов в определённой папке?



Заранее спасибо за ответ:sensored:
 
Ответить с цитированием

  #2452  
Старый 16.06.2018, 10:36
imring
Флудер
Регистрация: 03.08.2016
Сообщений: 2,363
С нами: 5145387

Репутация: 183


По умолчанию

Цитата:
Сообщение от romanblinov2013  

Добрый день, форумчане. Как найти WINAPI адрес, из которого можно достать размер определённой картинки?
Как узнать размеры изображения в пикселях (N x N) не загружая его в память - C++ Builder - Киберфорум(http://www.cyberforum.ru/cpp-builder/thread1837218.html)
 
Ответить с цитированием

  #2453  
Старый 16.06.2018, 14:27
NIKO
Новичок
Регистрация: 19.09.2003
Сообщений: 4
С нами: 11916434

Репутация: 0
По умолчанию

В общем, у меня есть функция, которая ставит JMP хук на указанный адрес. Проблема в том, что если поставить хук в разных файлах на один и тот же адрес, то хук перезаписывается и работает только в одном файле. Можно ли как то этого избежать?
 
Ответить с цитированием

  #2454  
Старый 16.06.2018, 19:55
BlackKnigga
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами: 5441999

Репутация: 133


По умолчанию

Цитата:
Сообщение от Niko  

В общем, у меня есть функция, которая ставит JMP хук на указанный адрес. Проблема в том, что если поставить хук в разных файлах на один и тот же адрес, то хук перезаписывается и работает только в одном файле. Можно ли как то этого избежать?
Можно сохранять перезаписываемые команды и выполнять их после своего кода
 
Ответить с цитированием

  #2455  
Старый 16.06.2018, 21:54
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

Цитата:
Сообщение от romanblinov2013  

Добрый день, форумчане. Как найти WINAPI адрес, из которого можно достать размер определённой картинки?

И сразу же добивающий вопрос...
Как узнать, сколько файлов в определённой папке?

Заранее спасибо за ответ:sensored:
C++:





Код:
int
iCount
=
0
;
std
::
string sPatch
=
"D
:
\\ShP\\
;
std
::
string sMask
=
sPatch
+
"*.png"
;
void
CheckFiles
(
)
{
iCount
=
0
;
WIN32_FIND_DATA FindFileData
;
HANDLE hFile
=
FindFirstFileA
(
szFullMask
.
c_str
(
)
,
&
FindFileData
)
;
if
(
hFile
!=
INVALID_HANDLE_VALUE
)
{
do
{
iCount
++
;
}
while
(
FindNextFile
(
hFile
,
&
FindFileData
)
!=
0
)
;
FindClose
(
hFile
)
;
}
}
printf
(
"%i"
,
iCount
)
;
 
Ответить с цитированием

  #2456  
Старый 16.06.2018, 23:32
NIKO
Новичок
Регистрация: 19.09.2003
Сообщений: 4
С нами: 11916434

Репутация: 0
По умолчанию

Цитата:
Сообщение от BlackKnigga  

Можно сохранять перезаписываемые команды и выполнять их после своего кода
Как это примерно на C++ будет выглядеть? Чет не нашел ничего на эту тему в гугле.
 
Ответить с цитированием

  #2457  
Старый 16.06.2018, 23:56
itsOkke
Познающий
Регистрация: 12.04.2018
Сообщений: 86
С нами: 4256625

Репутация: 0
По умолчанию

лучше создай одну хук функцию в которой вызывай из массива другие хук функции,

которые будут регистрироваться просто добавлением функции в этот массив
 
Ответить с цитированием

  #2458  
Старый 17.06.2018, 00:10
itsOkke
Познающий
Регистрация: 12.04.2018
Сообщений: 86
С нами: 4256625

Репутация: 0
По умолчанию

C++:





[CODE]
using
proc_DialogCallBack
=
void
(
__stdcall
*
)
(
)
;
class
DialogHook
{
public
:
void
registerDialogHook
(
void
(
__stdcall
*
func
)
(
)
)
{
// ...
}
void
registerDialogCallBack
(
proc_DialogCallBack callback
)
{
// ...
callbacks
.
push_back
(
callback
)
;
}
std
::
vector

callbacks
;
}
*
pDialog
;
__declspec
(
naked
)
void
__stdcall
hook
(
)
{
std
::
for_each
(
pDialog
->
callbacks
.
begin
(
)
,
pDialog
->
callbacks
.
end
(
)
,
[
]
(
proc_DialogCallBack
&
callback
)
{
callback
(
)
;
}
)
;
}
int
main
(
)
{
pDialog
->
registerDialogHook
(
hook
)
;
pDialog
->
registerDialogCallBack
(
[
]
(
)
{
std
::
cout

registerDialogCallBack
(
[
]
(
)
{
std
::
cout

registerDialogCallBack
(
[
]
(
)
{
std
::
cout



Вот же не поленился и расписал как это может примерно выглядеть

Цитата:
Сообщение от mkrn  

Нужно ещё учесть то, что хук другого плагина может не стоять. Можешь проверить это вот так: if (*reinterpret_cast(0x021A1F) == 0xE9) // 0xE9 - опкод jmp
А если опкод будет другой
 
Ответить с цитированием

  #2459  
Старый 17.06.2018, 00:20
itsOkke
Познающий
Регистрация: 12.04.2018
Сообщений: 86
С нами: 4256625

Репутация: 0
По умолчанию

вообще конфликтуют хуки из одного плагина, зачем вообще что то проверять через байты
 
Ответить с цитированием

  #2460  
Старый 17.06.2018, 00:23
NIKO
Новичок
Регистрация: 19.09.2003
Сообщений: 4
С нами: 11916434

Репутация: 0
По умолчанию

Цитата:
Сообщение от itsOkke  

вообще конфликтуют хуки из одного плагина, зачем вообще что то проверять через байты
Как раз таки из разных плагинов
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.