Ir ao conteúdo
  • Cadastre-se

Mayrinck Bernardo

Membro Pleno
  • Posts

    223
  • Cadastrado em

  • Última visita

Tudo que Mayrinck Bernardo postou

  1. clase main package application; import entities.Objeto; public class Program { public static void main(String[] args) { Objeto.name1 = "ola mundo1"; Objeto.setName2() = "ola mundo2"; Objeto.setName3() = "ola mundo3"; System.out.println(Objeto.name1 + Objeto.getName2() + Objeto.getName3() ); } } classe protect package application; public class Protect { protected String name3; } classe objeto package entities; public class Objeto { public static String name1; private String name2; public String getName2() { return this.name2; } public void setName2(String name2) { this.name2 = name2; } } alguem sabe dizer o que tá errado preciso chamar no main pra imprimir só pela variavel nao pode ser to string
  2. obrigado @arfneto sair do 0 #pragma once #include <windows.h> #include <tlhelp32.h> #include <tchar.h> #include <psapi.h> #include "stdio.h" #include "stdlib.h" #include <iostream> using namespace std; int CALLBACK agente(HWND, LPARAM); int main(int argc, char** argv) { DWORD flags = 0; int inherit = 0; ACCESS_MASK access = READ_CONTROL; HDESK desktop = OpenInputDesktop(flags, inherit, access); if (desktop == NULL) return -1; EnumDesktopWindows(desktop, agente, 0); return 0; }; // main() int CALLBACK agente(HWND H, LPARAM P) { char buffer[512]; DWORD pai; LPDWORD pId = &pai; int n = GetWindowTextLengthA(H); char* titulo = (char*)malloc(1 + n); GetWindowTextA(H, titulo, 1 + n); DWORD window_thread = GetWindowThreadProcessId(H, pId); ACCESS_MASK access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; HANDLE hProcess = OpenProcess(access, FALSE, pai); if (hProcess == NULL) return -1; n = GetProcessImageFileNameA(hProcess, buffer, 512); if (n <= 0) return -2; char* p = buffer; for (int i = n; i > 1; i -= 1) { if (buffer[i] != '\\') continue; p = buffer + i + 1; break; } // for() if (strlen(titulo) > 0) { printf("Window thread: %8d\ntitulo: '%s'\npai:%8d\nExe: '%s'\n", window_thread, titulo, pai, p); HANDLE hModuleSnap = CreateToolhelp32Snapshot ( TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, pai ); if (hModuleSnap == INVALID_HANDLE_VALUE) { wprintf(L"Format message failed with 0x%x\n", GetLastError()); } MODULEENTRY32 me32; me32.dwSize = sizeof(MODULEENTRY32); if (!Module32First(hModuleSnap, &me32)) { CloseHandle(hModuleSnap); return(FALSE); } _tprintf(TEXT("Mod base address: 0x%08X\n"), (DWORD)me32.modBaseAddr); _tprintf(TEXT("Mod base address: %ld\n"), (DWORD)me32.modBaseAddr); _tprintf(TEXT("\n")); CloseHandle(hModuleSnap); } free(titulo); return 1; }; // agente()
  3. quando testei if (hSnap == INVALID_HANDLE_VALUE)printf("CreateToolhelp32Snapshot error\n\n"); descobrir que todos estão dando erros, mesmo executando como administrador não entendo porque não funciona comigo se fiz tudo certinho mas essa função não ajuda. a saída: o programa: #pragma once #include <windows.h> #include <tlhelp32.h> #include <tchar.h> #include <psapi.h> #include "stdio.h" #include "stdlib.h" int CALLBACK agente(HWND, LPARAM); int main(int argc, char** argv) { DWORD flags = 0; int inherit = 0; ACCESS_MASK access = READ_CONTROL; HDESK desktop = OpenInputDesktop(flags, inherit, access); if (desktop == NULL) return -1; EnumDesktopWindows(desktop, agente, 0); return 0; }; // main() int CALLBACK agente(HWND H, LPARAM P) { char buffer[512]; DWORD pai; LPDWORD pId = &pai; int n = GetWindowTextLengthA(H); char* titulo = (char*)malloc(1 + n); GetWindowTextA(H, titulo, 1 + n); DWORD window_thread = GetWindowThreadProcessId(H, pId); ACCESS_MASK access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; HANDLE hProcess = OpenProcess(access, FALSE, pai); if (hProcess == NULL) return -1; n = GetProcessImageFileNameA(hProcess, buffer, 512); if (n <= 0) return -2; char* p = buffer; for (int i = n; i > 1; i -= 1) { if (buffer[i] != '\\') continue; p = buffer + i + 1; break; } // for() if (strlen(titulo) > 0) { printf("Window thread: %8d\ntitulo: '%s'\npai:%8d\nExe: '%s'\n",window_thread, titulo, pai, p); HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, window_thread); if (hSnap == INVALID_HANDLE_VALUE)printf("CreateToolhelp32Snapshot error\n\n"); } free(titulo); return 1; }; // agente()
  4. sim verdade mas seus 2 programas nehum printam na tela o module base adress voce so diz que tem o caminho mas nao mostra e eu estou tentando sair do 0 se é que voce entende.
  5. ok vamos la entao if (strlen(titulo) > 0) { uintptr_t m = GetModuleInformation(hProcess); if (!m)std::cout << "fail "; printf("Window thread: %8d\ntitulo: '%s'\npai:%8d\nExe: '%s'\n' ", window_thread, titulo, pai, p); }
  6. os outros argumentos são como mesmo? #pragma once #include <windows.h> #include <tlhelp32.h> #include <tchar.h> #include <psapi.h> #include "stdio.h" #include "stdlib.h" #include <iostream> using namespace std; int get_process_count() { HANDLE hProcessSnap; PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); int total_processes = 0; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) { return(-1); } if (!Process32First(hProcessSnap, &pe32)) { CloseHandle(hProcessSnap); return(-2); } do total_processes += 1; while (Process32Next(hProcessSnap, &pe32)) GetModuleInformation(hProcessSnap,); CloseHandle(hProcessSnap); return(total_processes); }; // get_process_count() int main() { int a = get_process_count(); printf("%d",a); return 0; }
  7. então se eu a minha função parar de retornar 0 e retornar algo vai retornar o mesmo numero que está saindo na variavel pai? ahsahsha perguntei isso antes
  8. me ajude aí, tem vários dias tentando... posta uma solução. porque nao usaria?
  9. meu compilador nem reclamou bem lembrado o return te que ser o ultimo argumento eu entendir que precisava ser assim porcausa que o compilador pede com ponteiro eu nunca usei essa função infelizmente ainda não, sinto que estou proximo mas estou aprendendo ainda então como seria o certo? não sou muito acostumado fazer isso
  10. tem um exemplo sobre isso? mas o nome está em char* gostei muito do conversor que postou mas o que fiz errado? #pragma once #include <windows.h> #include <tlhelp32.h> #include <tchar.h> #include <psapi.h> #include "stdio.h" #include "stdlib.h" #include <iostream> using namespace std; int CALLBACK agente(HWND, LPARAM); uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName); const wchar_t* converte( char* s); int main(int argc, char** argv) { DWORD flags = 0; int inherit = 0; ACCESS_MASK access = READ_CONTROL; HDESK desktop = OpenInputDesktop(flags, inherit, access); if (desktop == NULL) return -1; EnumDesktopWindows(desktop, agente, 0); return 0; }; // main() int CALLBACK agente(HWND H, LPARAM P) { char buffer[512]; DWORD pai; LPDWORD pId = &pai; int n = GetWindowTextLengthA(H); char* titulo = (char*)malloc(1 + n); GetWindowTextA(H, titulo, 1 + n); DWORD window_thread = GetWindowThreadProcessId(H, pId); ACCESS_MASK access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; HANDLE hProcess = OpenProcess(access, FALSE, pai); if (hProcess == NULL) return -1; n = GetProcessImageFileNameA(hProcess, buffer, 512); if (n <= 0) return -2; char* p = buffer; for (int i = n; i > 1; i -= 1) { if (buffer[i] != '\\') continue; p = buffer + i + 1; break; } // for() if (strlen(titulo) > 0) { uintptr_t moduleBase = GetModuleBaseAddress(window_thread, converte(titulo)); printf("Window thread: %8d\ntitulo: '%s'\npai:%8d\nExe: '%s'\n' ", window_thread, titulo, pai, p); std::cout << "base adress " << moduleBase << "\n\n" << std::endl; } else { printf("Window thread: %8d\tpai:%8d\tExe: '%s'\n", window_thread, pai, p); } free(titulo); return 1; }; // agente() uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName) { uintptr_t modBaseAddr = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId); if (hSnap != INVALID_HANDLE_VALUE) { MODULEENTRY32 modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32First(hSnap, &modEntry)) { do { if (!_wcsicmp(modEntry.szModule, modName)) { modBaseAddr = (uintptr_t)modEntry.modBaseAddr; break; } } while (Module32Next(hSnap, &modEntry)); } } CloseHandle(hSnap); return modBaseAddr; } const wchar_t* converte( char* s) { wchar_t* vetor_wide; vetor_wide = (wchar_t*)malloc(200 * sizeof(char)); int res = MultiByteToWideChar(65001, MB_PRECOMPOSED, s, -1, vetor_wide, sizeof(vetor_wide)); return vetor_wide; free(vetor_wide); }
  11. pode me ajudar a fazer isso então? não to conseguindo #include <stdio.h> #include <iostream> #include <string.h> int main(void) { std::string myString = "Master James"; const char* sz = myString.c_str(); size_t origsizes = strlen(sz) + 1; const size_t newsizes = 500; size_t convertedCharP = 0; wchar_t constTowchar[500]; mbstowcs(&convertedCharP, constTowchar, origsizes, sz, _TRUNCATE); std::wcout << constTowchar << std::endl; }
  12. quero saber se tem como usar o compilador do visualstudio no devc++ ou em outra ide mais leve porque o visual studio é muito pesado a as vezes dá uma travadinha
  13. aqui continua dando 0 adicionado 1 minuto depois #pragma once #include <windows.h> #include <tlhelp32.h> #include <tchar.h> #include <psapi.h> #include "stdio.h" #include "stdlib.h" #include <iostream> using namespace std; int CALLBACK agente(HWND, LPARAM); uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName); int main(int argc, char** argv) { DWORD flags = 0; int inherit = 0; ACCESS_MASK access = READ_CONTROL; HDESK desktop = OpenInputDesktop(flags, inherit, access); if (desktop == NULL) return -1; EnumDesktopWindows(desktop, agente, 0); return 0; }; // main() int CALLBACK agente(HWND H, LPARAM P) { char buffer[512]; DWORD pai; LPDWORD pId = &pai; int n = GetWindowTextLengthA(H); char* titulo = (char*)malloc(1 + n); GetWindowTextA(H, titulo, 1 + n); DWORD window_thread = GetWindowThreadProcessId(H, pId); ACCESS_MASK access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; HANDLE hProcess = OpenProcess(access, FALSE, pai); if (hProcess == NULL) return -1; n = GetProcessImageFileNameA(hProcess, buffer, 512); if (n <= 0) return -2; char* p = buffer; for (int i = n; i > 1; i -= 1) { if (buffer[i] != '\\') continue; p = buffer + i + 1; break; } // for() if (strlen(titulo) > 0) { uintptr_t moduleBase = GetModuleBaseAddress(window_thread, (const wchar_t*)titulo); printf("Window thread: %8d\ntitulo: '%s'\npai:%8d\nExe: '%s'\n' ", window_thread, titulo, pai, p); std::cout << "base adress " << moduleBase << "\n\n" << std:: endl; } else { printf("Window thread: %8d\tpai:%8d\tExe: '%s'\n", window_thread, pai, p); } free(titulo); return 1; }; // agente() uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName) { uintptr_t modBaseAddr = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId); if (hSnap != INVALID_HANDLE_VALUE) { MODULEENTRY32 modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32First(hSnap, &modEntry)) { do { if (!_wcsicmp((const wchar_t*)modEntry.szModule, modName)) { modBaseAddr = (uintptr_t)modEntry.modBaseAddr; break; } } while (Module32Next(hSnap, &modEntry)); } } CloseHandle(hSnap); return modBaseAddr; }
  14. eu consegui rodar o programa que voce postou mas nao sei escrever Para uma lista de módulos de um processo eu ainda nao consigo entender bem esses dados typedefs do windows pra mim é complicado saber o caminho e nao conseguir fazer
  15. não conseguir tem como mostrar o programa completo ?
  16. deixa eu ver se entendir: o ModuleBaseAddress que não estou coneguindo imprimir na tela é o número que o seu programa mostra com o nome de pai? porque a função GetProcessImageFileNameA só é reconhecida pelo visualstudio?
  17. hmm é bom saber disso mas creio que o problema é um pouco mais grave tentei fazer isso com um jogo que tenho aqui que foi desenvolvido em c++ e não funcionou nem em uma versão antiga nem na atual, e tambem em nehum outro mas nao vou desistir vou continuar tentando agradeço a ajuda.
  18. sim eu ainda tenho ele guardado aqui desde que você postou a primeira vez, se eu for modifica-lo agora vou demorar queria resolver logo o problema pra depois fazer algo mais elegante. adicionado 2 minutos depois então essa função so consegue os apps que foram desenvolvidos antigamente? eu não sei a linguagem, mas tenho outros jogos que queria aplicar a técnica, funcionando em algum está bom pra mim
  19. adicionado 0 minutos depois ProcID 3020 szModule: ApplicationFrameHost.exe szModule: ntdll.dll szModule: KERNEL32.DLL szModule: KERNELBASE.dll szModule: msvcrt.dll szModule: combase.dll szModule: ucrtbase.dll szModule: RPCRT4.dll szModule: bcryptPrimitives.dll szModule: dxgi.dll szModule: win32u.dll szModule: gdi32.dll szModule: gdi32full.dll szModule: msvcp_win.dll szModule: USER32.dll szModule: dxcore.dll szModule: cfgmgr32.dll szModule: IMM32.DLL szModule: kernel.appcore.dll szModule: ApplicationFrame.dll szModule: SHCORE.dll szModule: SHLWAPI.dll szModule: PROPSYS.dll szModule: OLEAUT32.dll szModule: sechost.dll szModule: twinapi.appcore.dll szModule: UxTheme.dll szModule: bcp47mrm.dll szModule: DEVOBJ.dll szModule: TWINAPI.dll szModule: d2d1.dll szModule: dwmapi.dll szModule: RMCLIENT.dll szModule: d3d11.dll szModule: OneCoreUAPCommonProxyStub.dll szModule: MSCTF.dll szModule: ADVAPI32.dll szModule: D3D10Warp.dll szModule: dcomp.dll szModule: CoreMessaging.dll szModule: UIAutomationCore.DLL szModule: SHELL32.dll szModule: windows.storage.dll szModule: profapi.dll szModule: powrprof.dll szModule: UMPDC.dll szModule: cryptsp.dll szModule: windows.staterepositorycore.dll szModule: windowscodecs.dll szModule: Windows.StateRepositoryPS.dll szModule: mrmcorer.dll szModule: iertutil.dll szModule: Bcrypt.dll szModule: Windows.UI.dll szModule: TextInputFramework.dll szModule: InputHost.dll szModule: CoreUIComponents.dll szModule: ntmarta.dll szModule: wintypes.dll szModule: UIAnimation.dll szModule: rometadata.dll szModule: OneCoreCommonProxyStub.dll szModule: ActXPrxy.dll Modulebase 0
  20. sim #include <tchar.h> #include <windows.h> #include <TlHelp32.h> #include <iostream> #include <Psapi.h> #include <wchar.h> using namespace std; uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName){ uintptr_t modBaseAddr = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId); if (hSnap != INVALID_HANDLE_VALUE) { MODULEENTRY32W modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32FirstW(hSnap, &modEntry)) { do { if (!_wcsicmp(modEntry.szModule,modName)) { modBaseAddr = (uintptr_t)modEntry.modBaseAddr; break; } } while (Module32NextW(hSnap, &modEntry)); } } //CloseHandle(hSnap); return modBaseAddr; } int main(){ HWND GameHWND = FindWindow(0,"calculadora"); DWORD procId = 0; GetWindowThreadProcessId(GameHWND, &procId); std::cout<<"ProcID "<< procId << std::endl; //Getmodulebaseaddress uintptr_t moduleBase = GetModuleBaseAddress(procId, L"calc.exe"); std::cout<<"Modulebase "<< moduleBase<< std::endl; cin.ignore(); } adicionado 0 minutos depois o jogo estava fechado quando fiz isso agora
  21. @holifaca fiz todos testes que mandou e continua dando 0, não sei o que fazer, tanto a calculadora quanto a jogo.
  22. sim a janela está dando bom o problema é o que mostrei no print
  23. tinha esquecido mesmo mas o problema continua sempre da 0 mesmo o processo rodando

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...