Author Topic: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread  (Read 1320 times)

sanjuro

  • Registered
  • *
  • Posts: 3
Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« on: February 08, 2012, 04:29:05 PM »
Zdravim, akurat sa priucam hakovaniu. Nie je mi jasny 4. parameter funkcie SetWindowsHookEx, ktorym je id vlakna. Ak zavolam napriklad:

Code: [Select]
SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, g_hInstDll, dwThreadId);
tak sa moje dll(g_hInstdll) nacita len do adresneho priestoru procesu vlakna ktore som poskytol(dwThreadId)? V pripade ze zavolam to iste len miesto dwThreadId pouzijem 0, tak to znamena ze sa moje dll nacita do adresneho priestoru kazdeho procesu? Ak to tak nie je aky je potom rozdiel?
Ako hooknut pomocou CreateRemoteThread mi je v podstate jasne. Podstrcime LoadLibrary ako parameter a remote thread nacita do cudzieho procesu nase dll. Avsak ked uz je nase dll v adresnom priestore cudzieho procesu, ako potom zavolame nejaku funkciu naseho dll? Vsak cudzi proces na to nie je stavany, on funkcie naseho dll nebude urcite volat. Alebo sme volanim nasich funkcii pri tomto type hooku obmedzeny len na priestor v DllMain a DLL_PROCESS_ATTACH? Nebolo by potom mozne injektnut dll takto?:

Code: [Select]
DWORD WINAPI MyThreadFunction( LPVOID lpParam )
{
      HMODULE hLib = LoadLibrary("blabla.dll");
      //a tu si uz volam co chcem napr pomocou GetProcAdres
}

Este si neviem suvislosti tak davat dokopy. Preto dakujem za odpovede.


pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #1 on: February 09, 2012, 12:43:32 PM »
v prvom rade musim povedat, ze na tomto fore sa s prepacenim lammeriny/prijebanosti typu "hakovanie" neriesia - neviem co to vlastne je, pravdupovediac. >:(
(ked uz si to chcel nejako nazvat, tak si to mal nazvat napr "kodenie malwaru" alebo podobne - kedze ako tak kukam na otazky, ktore pises tak to vyzera na nejake veci ohladne mozno/dajme tomu malware veci) ???

co sa tyka otazok. odpoviem ti na vsetky, len teraz nemam cas vypisovat - ale ked dockas casu (max par dni), tak ti obsirne odpoviem na vsetko (ak sa nahodou dovtedy niekto nepodujme ti pomoct namiesto mna).
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!

sanjuro

  • Registered
  • *
  • Posts: 3
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #2 on: February 10, 2012, 09:08:40 AM »
ok dik v pohode pockam, mrzi ma ze som urazil banalnostou svojho problemu, ale som si povedal, ze kde uz budu lepsie naozaj skutocne rozumiet sprave pamati a DLL injectingu ako na RE fore, vacsinou ked sa pytam na systemove veci na obycanych forach tak dostanem ucebnicove odpovede, ktore casto neodpovedau presne na to na co som as pytal. Nebude to ziadny malware, ale uzitocna aplikacia. Zatial diky
« Last Edit: February 10, 2012, 09:10:58 AM by sanjuro »

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #3 on: February 10, 2012, 01:04:05 PM »
nikoho si neurazil, to nie, len tu mame alergiu na lammerov (hakerov, hackerov.. a podobne "odvetvia priemyslu" :D) - ale zaroven vitame ludi, kt sa chcu niecomu serioznemu priucit. :D ;)

no a, co to ma byt za uzitocna vec (aplikacia)? mozes prezradit??
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!

sanjuro

  • Registered
  • *
  • Posts: 3
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #4 on: February 14, 2012, 04:18:44 PM »
No slovo uzitocna som asi nespravne pouzil, lepsie oznacenie je neskodna, lebo ani sam neviem ci ju niekedy vyuzijem, o to mi ale nejde, chcem sa pri jej pisani nieco naucit. Vymyslel som si screenovaciu utilitku, kdekolvek po stlaceni zvolenej klavesy spravi screen obrazovky, nieco podobne ako fraps. Ja som aplikacny programator v .NET(aspon tak nas nazyvaju vo firme) a teda systemove programovanie u nas nehrozi. Avsak mna vzdy lakalo a fascinovalo a tak som sa zacal vo volnom case priucat C/C++, sprave pamati atd. (planujem aj assembler). Momentalne citam knihu Windows via C/C++, vacsinu veci som schopny pochopit avsak sem tam mam nejake nezrovnalosti ako v tomto pripade, preto ma potesi kazda odpoved, ktora mi pomoze lepsie pochopit danemu problemu.

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #5 on: February 15, 2012, 06:44:06 AM »
strasne nieco tato doba, vsetci len v jave, .net a podobnych humusnych veciach robia :(

;----

dufam, ze som pochopil tvoje otazky (ak nie, tak sa kludne pytaj dalej). pouzitie api "SetWindowsHookExA",
na pouzitie hooku bud pre proces odkial je hook instaluje alebo pre ostatne procesy (a to moze byt bud pre
konkretny proces alebo pre vsetky procesy). co sa tyka parametra "dwThreadID" - moze byt bud 0h (NULL) pre
vsetky procesy alebo tam moze byt nejaka konkretna hodnota TID (Thread ID) (pozor, nie PID - napr v pripade,
ze mame proces, kt ma len jeden thread, tak hodnota PID a TID je ina - takze vzdy davame TID) z procesu, na
kt chceme hook pouzit.

v tomto linku mas povedane vsetko co potrebujes (je to strasne stara vec od Iczelion-a)(+ preklad, ak neovladas eng):

Code: [Select]
http://win32assembly.online.fr/tut24.html
http://shaldan.xf.cz/tut24.html

co sa tyka druhej otazky - asi nechapem co sa pytas. neviem co mas na mysli tym, ked vravis, ze proces nie je
stavany na nahratie "cudzej" dll - nie je to ziadny problem, je to bezna vec. to, ze proces nebude volat
funkcie z takto nahratej dll je samozrejme - nemoze predsa volat funkcie z dll, kt su do procesu dodane
pomimo originalneho kodu procesu. takze CreateRemoteThread bude vykonavat kod, kt je uplne mimo povodneho
kodu procesu - no a, tymto mimo kodom mozme okrem ineho robit aj to co pises, nahrat dll a potom z threadu
volat jeho funkcie. funguje to tak ako pises:

invoke LoadLibraryA, offset NazovDll

invoke GetProcAddress, eax, offset NazovFunkcieDll

takze, zavolaj api LoadLibraryA - ta ma len jeden parameter, a tym je nazov dll. po volani tejto api nam v
EAX zostane imagebase nahratej dll. tu je oficialny popis tejto api (nedavam to tu cele, len dolezite veci):

Code: [Select]
The LoadLibrary function maps the specified executable module into the address space of the calling process.

HINSTANCE LoadLibrary(

    LPCTSTR  lpLibFileName // address of filename of executable module
   );

Return Value

If the function succeeds, the return value is a handle to the module.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

presne ako pisem, pisu aj tu, ze ak funkcia sa vykona uspesne, tak sa navrati handle k dll (tj imagebase).

k api GetProcAddress mame toto:

Code: [Select]
The GetProcAddress function returns the address of the specified exported dynamic-link library (DLL) function.

FARPROC GetProcAddress(

    HMODULE  hModule, // handle to DLL module 
    LPCSTR  lpProcName // name of function
   );

Return Value

If the function succeeds, the return value is the address of the DLL's exported function.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

takze, ked sa vratime opat sem:

invoke LoadLibraryA, offset NazovDll

invoke GetProcAddress, eax, offset NazovFunkcieDll

v EAX mame teda imagebase k dll - to je parameter "hModule". no a druhy parameter je len nazov funkcie z dll,
kt hladame. po vykonani api GetProcAddress bude v EAX adresa hladanej funkcie.
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!

HypnotiX

  • [CSCF]
  • Newbie
  • ***
  • Posts: 43
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #6 on: February 18, 2012, 12:32:18 PM »
Ako hooknut pomocou CreateRemoteThread mi je v podstate jasne.....

Ahoj, tohle ale neni hooking, ale DLL injection. Slouzi to jenom pro nahrani sve Dll do jine aplikace. Tam teprve muzes udelat hook na Importy, Exporty, zmenit kod ( tj. nahrazeni puvodnich funkci ). Neco muzes najit tady http://bflow.security-portal.cz/import-address-table-hooking/ . Doporucuju pred pouzitim nechat dll projet na www.virustotal.com, nektere AV to muzou povazovat za malware.

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: Hakovanie pomocou SetWindowsHookEx a CreateRemoteThread
« Reply #7 on: February 20, 2012, 01:13:54 PM »
tiez som si myslel, ze to nie je hooking - ale ked som si nahodil slovo hooking do wikipedie, tak som zistil, ze aj pouzitie (samo-o-sebe) CreateRemoteThread je brane ako hooking. ???

pouzitie tejto api som okrem ineho opisoval aj v dvoch mojich esetcme tutorialoch. snad budu tiet tuty tu (ak nie, tak daj vediet, ich reupnem):

Code: [Select]
http://t4c.ic.cz/forum/index.php?topic=664.0
« Last Edit: February 20, 2012, 01:16:24 PM by pr0p4g4nd4 »
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!