 |
|

15.03.2016, 15:58
|
|
Новичок
Регистрация: 21.06.2015
Сообщений: 22
С нами:
5733802
Репутация:
53
|
|
Сообщение от Gabriel__
Почему не работает!!!
Это все изза дибильной функции stricmp которая не сравнивает две строки если они одинаковые. (код отлаживал)
Код:
Код:
#include
#include
....
DWORD GetPID(const char * m_pName)
{
DWORD m_pID = 0;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pInfo;
pInfo.dwSize = sizeof(PROCESSENTRY32);
.................
Код:
Код:
void GetPID()
{
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pInfo;// тут хранится запись о текущем процессе
pInfo.dwSize = sizeof(PROCESSENTRY32);// размер структуры записи текущего процесса
if (Process32First(snapshot, &pInfo))
{
while (Process32Next(snapshot, &pInfo))
{
if (_stricmp(m_pName, pInfo.szExeFile) == 0)
{
m_pID = pInfo.th32ProcessID;
CloseHandle(snapshot);
return;
}
}
}
CloseHandle(snapshot);
m_pID = 0;
}
void Open(DWORD accessRights)
{
GetPID();
m_hProc = OpenProcess(accessRights, false, m_pID);
}
DWORD getPID(){ return m_pID; }
|
|
|

15.03.2016, 16:01
|
|
Новичок
Регистрация: 21.06.2015
Сообщений: 22
С нами:
5733802
Репутация:
53
|
|
Сообщение от FYP
@Vasiliy77, тебе нужно получить базовый адрес модуля в процессе.
это можно сделать с помощью такой функции:
C++:
Код:
#include
#include
HMODULE
getModuleHandleRemote
(
DWORD processId
,
const
char
*
moduleName
)
{
HANDLE snap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
,
processId
)
;
if
(
snap
==
INVALID_HANDLE_VALUE
)
return
NULL
;
MODULEENTRY32 moduleEntry
;
moduleEntry
.
dwSize
=
sizeof
(
moduleEntry
)
;
bool
found
=
Module32First
(
snap
,
&
moduleEntry
)
==
TRUE
;
while
(
found
)
{
if
(
stricmp
(
moduleEntry
.
szModule
,
moduleName
)
==
0
)
return
CloseHandle
(
snap
)
,
moduleEntry
.
hModule
;
found
=
Module32Next
(
snap
,
&
moduleEntry
)
==
TRUE
;
}
CloseHandle
(
snap
)
;
return
NULL
;
}
Спасибо, все получилось. А как можно узнать какие клео скрипты уже загружены в память? В каком участке памяти это есть? Нужны особенно те скрипты, которые делают WriteMemory в процесс.
|
|
|

16.03.2016, 16:07
|
|
Участник форума
Регистрация: 15.02.2015
Сообщений: 106
С нами:
5916400
Репутация:
68
|
|
подскажите плиз где найти задачки с примерами среднего уровня по ООП C++
|
|
|

16.03.2016, 17:00
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от Goldfish
подскажите плиз где найти задачки с примерами среднего уровня по ООП C++
Гугл)))
|
|
|

16.03.2016, 18:12
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Сообщение от legend2360
И что именно не работает? Я скомпилил, норм всё.
Сказал же _stricmp нихрена не работает! Строки одинаковые но выдает что они разные!
Наверное это все изза вот такого преобразования
_stricmp(m_pName, (char *) pInfo.szExeFile) == 0
Без вот этого ---
Ошибка компиляции.
error C2664: _stricmp: невозможно преобразовать параметр 2 из "WCHAR [260]" в "const char *"
Код:
Код:
DWORD GetPID()
{
DWORD m_pID = 0;
char * m_pName = "smss.exe";
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pInfo;// тут хранится запись о текущем процессе
pInfo.dwSize = sizeof(PROCESSENTRY32);// размер структуры записи текущего процесса
if (Process32First(snapshot, &pInfo))
{
while (Process32Next(snapshot, &pInfo))
{
if (_stricmp(m_pName, (char *) pInfo.szExeFile) == 0)
{
m_pID = pInfo.th32ProcessID;
CloseHandle(snapshot);
return m_pID;
}
}
}
CloseHandle(snapshot);
return m_pID;
}
|
|
|

16.03.2016, 22:39
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
В свойствах проекта установи набор символов из многобайтовой кодировки.
|
|
|

16.03.2016, 23:17
|
|
Участник форума
Регистрация: 15.02.2015
Сообщений: 106
С нами:
5916400
Репутация:
68
|
|
Сообщение от Dark_Knight
Гугл)))
спасибо что напомнил :mda:
|
|
|

17.03.2016, 13:24
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Как проверить что хендл или указатель рабочие ? Тоесть на что они указывают существует.
|
|
|

17.03.2016, 14:27
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
!= null(nullptr)
|
|
|

20.03.2016, 14:00
|
|
Постоянный
Регистрация: 10.04.2013
Сообщений: 783
С нами:
6888753
Репутация:
133
|
|
Извините прям, ну вот совсем за такой уебанский вопрос. Что нужно добавлять в исходник кода, чтоб консоль не закрывалась сразу после выполнения кода. Т.е. даже самый простой пример, я вывожу текст Hello, World ! И даже не успеваю его прочитать, как консоль закрывается. Или считаю числа и не успеваю посмотреть ответ между подсчетами. Короче сабж.
Пример кода:
Сообщение от Спойлер
C++:
[CODE]
#include "stdafx.h"
#include
int
main
(
)
{
std
::
cout
>
v1
>>
v2
;
std
::
cout
Код все норм дебажится и запускается консоль.
Вот кстати код дебага:
Сообщение от Спойлер
Код:
Код:
'ConsoleApplication1.exe' (Win32): Loaded 'C:\Users\Oleg\Documents\Visual Studio 2013\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe'. Symbols loaded.
'ConsoleApplication1.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file.
'ConsoleApplication1.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file.
'ConsoleApplication1.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file.
'ConsoleApplication1.exe' (Win32): Loaded 'C:\Windows\System32\msvcp120d.dll'. Cannot find or open the PDB file.
'ConsoleApplication1.exe' (Win32): Loaded 'C:\Windows\System32\msvcr120d.dll'. Cannot find or open the PDB file.
The program '[3384] ConsoleApplication1.exe' has exited with code 0 (0x0).
P.S. Microsoft Visual Studio 2013 (последний Pack)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|