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

  #761  
Старый 15.03.2016, 15:58
Vasiliy77
Новичок
Регистрация: 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; }
 
Ответить с цитированием

  #762  
Старый 15.03.2016, 16:01
Vasiliy77
Новичок
Регистрация: 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 в процесс.
 
Ответить с цитированием

  #763  
Старый 16.03.2016, 16:07
Goldfish
Участник форума
Регистрация: 15.02.2015
Сообщений: 106
С нами: 5916400

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

подскажите плиз где найти задачки с примерами среднего уровня по ООП C++
 
Ответить с цитированием

  #764  
Старый 16.03.2016, 17:00
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

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

подскажите плиз где найти задачки с примерами среднего уровня по ООП C++
Гугл)))
 
Ответить с цитированием

  #765  
Старый 16.03.2016, 18:12
Gabriel__
Постоянный
Регистрация: 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;
}
 
Ответить с цитированием

  #766  
Старый 16.03.2016, 22:39
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

В свойствах проекта установи набор символов из многобайтовой кодировки.
 
Ответить с цитированием

  #767  
Старый 16.03.2016, 23:17
Goldfish
Участник форума
Регистрация: 15.02.2015
Сообщений: 106
С нами: 5916400

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

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

Гугл)))
спасибо что напомнил :mda:
 
Ответить с цитированием

  #768  
Старый 17.03.2016, 13:24
Gabriel__
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами: 5731627

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

Как проверить что хендл или указатель рабочие ? Тоесть на что они указывают существует.
 
Ответить с цитированием

  #769  
Старый 17.03.2016, 14:27
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

!= null(nullptr)
 
Ответить с цитированием

  #770  
Старый 20.03.2016, 14:00
01EG
Постоянный
Регистрация: 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)
 


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




ANTICHAT ™ © 2001- Antichat Kft.