Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
R7flex Assembly Builder
@waryin dostum assembly yazarken krize giriyordu dakika başı instructionlara
bakıyordu sürekli
uğraşıp duruyordu bende basit yolunu geliştirdim basit bir şekilde instructionları kullanıp
her türlü alanda işe yarıcak bir proje oldu tamamen cpp17 ile gelip cpp20'de büyük değişiklere uğratılan
std::holds_alternative, std::variant kullanıldı bize büyük ölçüde kolaylık sağlıyor.
ek olarak deprecated type ve templateler sayesinde yine cpp17 desteğide vardır (cpp14 ve altı çalışmaz)
Main Instruction Destekleri:
mov, call, push, pop, ret (çok istiyorsanız daha şeyler siz ekleyin banane)
Örnek Kullanım:
@waryin dostum assembly yazarken krize giriyordu dakika başı instructionlara
bakıyordu sürekli
Linkleri görebilmek için kayıt olmanız gerekmektedir
sitesine girip sürekliuğraşıp duruyordu bende basit yolunu geliştirdim basit bir şekilde instructionları kullanıp
her türlü alanda işe yarıcak bir proje oldu tamamen cpp17 ile gelip cpp20'de büyük değişiklere uğratılan
std::holds_alternative, std::variant kullanıldı bize büyük ölçüde kolaylık sağlıyor.
ek olarak deprecated type ve templateler sayesinde yine cpp17 desteğide vardır (cpp14 ve altı çalışmaz)
Linkleri görebilmek için kayıt olmanız gerekmektedir
Main Instruction Destekleri:
mov, call, push, pop, ret (çok istiyorsanız daha şeyler siz ekleyin banane)
Örnek Kullanım:
C++:
#include <iostream>
#include <iomanip>
#include <windows.h>
#include "assembly_builder.hpp"
using namespace shellcode;
void example_function() {
std::cout << "huso niye facebook oldun" << std::endl;
}
int32_t main() {
{
shellcode::assemby_builder builder;
builder
.add(assembly_instruction::x64_type::MOV, { assembly_instruction::x64_register::RAX, &example_function })
.add(assembly_instruction::x64_type::CALL, { assembly_instruction::x64_register::RAX })
.add(assembly_instruction::x64_type::RET);
auto shellcode = builder.build();
std::cout << "generated func shell:" << std::endl;
for (auto byte : shellcode) {
std::cout << "\\x" << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(byte);
}
std::cout << std::endl;
void* exec_mem = VirtualAlloc(nullptr, shellcode.size(), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (!exec_mem) {
return 1;
}
std::copy(shellcode.begin(), shellcode.end(), static_cast<std::uint8_t*>(exec_mem));
std::cout << "running shell..." << std::endl;
try {
using shellcode_test = void(*)();
auto func = reinterpret_cast<shellcode_test>(exec_mem);
func();
}
catch (...) {
std::cerr << "error" << std::endl;
}
if (exec_mem) {
VirtualFree(exec_mem, 0, MEM_RELEASE);
}
}
return 1337;
}
Son düzenleme: