 |
|

16.06.2018, 10:15
|
|
Участник форума
Регистрация: 12.10.2016
Сообщений: 212
С нами:
5044008
Репутация:
108
|
|
Добрый день, форумчане. Как найти WINAPI адрес, из которого можно достать размер определённой картинки?
И сразу же добивающий вопрос...
Как узнать, сколько файлов в определённой папке?
Заранее спасибо за ответ:sensored:
|
|
|

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

16.06.2018, 14:27
|
|
Новичок
Регистрация: 19.09.2003
Сообщений: 4
С нами:
11916434
Репутация:
0
|
|
В общем, у меня есть функция, которая ставит JMP хук на указанный адрес. Проблема в том, что если поставить хук в разных файлах на один и тот же адрес, то хук перезаписывается и работает только в одном файле. Можно ли как то этого избежать?
|
|
|

16.06.2018, 19:55
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Сообщение от Niko
В общем, у меня есть функция, которая ставит JMP хук на указанный адрес. Проблема в том, что если поставить хук в разных файлах на один и тот же адрес, то хук перезаписывается и работает только в одном файле. Можно ли как то этого избежать?
Можно сохранять перезаписываемые команды и выполнять их после своего кода
|
|
|

16.06.2018, 21:54
|
|
Постоянный
Регистрация: 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
)
;
|
|
|

16.06.2018, 23:32
|
|
Новичок
Регистрация: 19.09.2003
Сообщений: 4
С нами:
11916434
Репутация:
0
|
|
Сообщение от BlackKnigga
Можно сохранять перезаписываемые команды и выполнять их после своего кода
Как это примерно на C++ будет выглядеть? Чет не нашел ничего на эту тему в гугле.
|
|
|

16.06.2018, 23:56
|
|
Познающий
Регистрация: 12.04.2018
Сообщений: 86
С нами:
4256625
Репутация:
0
|
|
лучше создай одну хук функцию в которой вызывай из массива другие хук функции,
которые будут регистрироваться просто добавлением функции в этот массив
|
|
|

17.06.2018, 00:10
|
|
Познающий
Регистрация: 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
А если опкод будет другой
|
|
|

17.06.2018, 00:20
|
|
Познающий
Регистрация: 12.04.2018
Сообщений: 86
С нами:
4256625
Репутация:
0
|
|
вообще конфликтуют хуки из одного плагина, зачем вообще что то проверять через байты
|
|
|

17.06.2018, 00:23
|
|
Новичок
Регистрация: 19.09.2003
Сообщений: 4
С нами:
11916434
Репутация:
0
|
|
Сообщение от itsOkke
вообще конфликтуют хуки из одного плагина, зачем вообще что то проверять через байты
Как раз таки из разных плагинов
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|