მოგესალმებათ CYBSECGROUP ფორუმი
№1 კიბერ ფორუმი საქართველოში, თქვენ გაქვთ შესაძლებლობა გაეცნოთ საინტერესო პროექტებს, საინტერესო გარემოში
რეგისტრაცია

Clipboard შემცვლელი C++ -ში!

Z3R0

Hacktivist 🌐
ადმინისტრაცია
ადმინისტრატორი
აგვ 9, 2018
97
161
Hell ·
#1
გამარჯობა მეგობრებო მინდა დღეს განვიხილოთ ცოტა C++
კონკრეტულად პატარა ფუნქცია რომელსაც ვირუსები ხშირად იყენებენ, ესაა Clipboard Change-ფუნქცია
რაც ნიშნავს იმას რომ ეს კოდი ცვლის თქვენს მიერ დაკოპირებულ კონტენტს

დავწერ კოდს რომელიც
1) გახსნის თქვენს კლიპბორდს
2) წაიკითხავს კონტენტს
3) შეადარებს წინასწარ შერჩეულ სტრინგს
4) დამთხვევის შემთხვევაში შეცვლის დაკოპირებულ ტექტს

შემოვიტანოთ საჭირო ბიბლიოთეკები

C++:
#include <string> //სტრინგების ბიბლოთეკა
#include "windows.h" //ვინდოუსის ბიბლიოთეკა (რათა მივიღოთ წვდომა კლიპბორდზე)
#include <iostream>; //Input Output ბიბლიოთეკა ტერმინალში ტექსტის დასაბეჭდად

//და აქვე შევამოკლოთ std

using namespace std;
მას შემდეგ რაც საჭირო ბიბლიოთეკები გვაქვს, დავიწყოთ კლიპბორდის შემცვლელის ფუნქციის წერა, კოდი გამოვა ძალიან მოკლე და მოქნილი

C++:
void toClipboard(const string &s){ //ფუნქცია რომელიც სტრინგს შეიტანს კლიპბორდში
    OpenClipboard(0); //გავხსნათ კლიპბორდი
    EmptyClipboard();    // გავასუფთაოთ კონტენტი
    HGLOBAL hg=GlobalAlloc(GMEM_MOVEABLE,s.size()+1); // მოვახდინოთ სტრინგის სიგრძის ალოკაცია (+1 იმიტომ რომ კოდი თვლას იწყებს ნოლიდან)
    if (!hg){
        CloseClipboard(); // დავხუროთ კლიპბორდი წარუმატებელი ალოკაციის შემთხვევაში
        return;
    }
    memcpy(GlobalLock(hg),s.c_str(),s.size()+1); // გადავიტანოთ ტექსტი ოპერატიულ მეხსიეირებაში
    GlobalUnlock(hg); // მოვხსნათ ბლოკი ოპერატიულ მეხსიეირებაში გადატანილ ტექსტს
    SetClipboardData(CF_TEXT,hg); //შევიტანოთ კლიპბორდზე ტექსტი
    CloseClipboard(); //დავხუროთ კლიპბორდი
    GlobalFree(hg); // გავათავისუფლოთ ოპერატიული მეხსიეირება
}
ფუნქცია მზადაა, მხოლოდ საჭიროა ამ გადავცეთ ტექსტი და ეს ტექსტი ჩაიწერება მომხმარებლის კლიპბორდზე...

დავიწყოთ getclipboard ფუნქციის წერა

C++:
string getclipboard() {

        HANDLE clip; // გავხსნათ კლიპბორდისთვის ჰენდლი
        OpenClipboard(NULL); // გავხსნათ კლიპბორდი
        clip = GetClipboardData(CF_TEXT); //შევიტანოთ ტექსტი ცვლადში
        CloseClipboard(); //დავხუროთ კლიპბორდი

        string text; //შევქმნათ სტრინგ ცვლადი მარტივი მუშაობისთვის
    
        text = (char*)clip; //გადავიყვანოთ კლიპბორდის ტექსტი სტრინგში
        return text; //დავაბრუნოთ რეზულტატი
}
დაგვრჩა მეინ ფუნქციის დაწერა რომელიც უყურებს კლიპბორდს და ელოდება სპეც. სტრინგს დამთხვევას და შეცვლის რეზულტატს...
C++:
int main(){

    string matchtext = "C.S.G Is Cool"; // ტექსტი რომელსაც ვეძებთ
    while (true) { //უსასრულო ლუფი
        string cliptext = getclipboard(); //ფუნციის რეზულტატი ცვლად cliptext-ში
        if (cliptext == matchtext) { // თუ კლიპბორდის (დაკოპირებული ტესქტი) დაემთხვა ჩვენს მიერ შერჩეულ სტრინგს
            toClipboard("C.S.G Is Awesome"); // შევცვალოთ ტექსტი კიპბორდზე
        }
        Sleep(300); //იმისთვის რომ კომპიუტერი ძალიან არ დაიტვირთოს კოდმა ყოველი დამთხვევის ძებნამდე დაისვენოს 0.3 წამით
    }
}
სულ ეს იყო, სრული კოდი გამოიყურება ასე:
C++:
#include <string> //სტრინგების ბიბლოთეკა
#include "windows.h" //ვინდოუსის ბიბლიოთეკა (რათა მივიღოთ წვდომა კლიპბორდზე)
#include <iostream>; //Input Output ბიბლიოთეკა ტერმინალში ტექსტის დასაბეჭდად

//და აქვე შევამოკლოთ std

using namespace std;

void toClipboard(const string &s){ //ფუნქცია რომელიც სტრინგს შეიტანს კლიპბორდში
    OpenClipboard(0); //გავხსნათ კლიპბორდი
    EmptyClipboard();    // გავასუფთაოთ კონტენტი
    HGLOBAL hg=GlobalAlloc(GMEM_MOVEABLE,s.size()+1); // მოვახდინოთ სტრინგის სიგრძის ალოკაცია (+1 იმიტომ რომ კოდი თვლას იწყებს ნოლიდან)
    if (!hg){
        CloseClipboard(); // დავხუროთ კლიპბორდი წარუმატებელი ალოკაციის შემთხვევაში
        return;
    }
    memcpy(GlobalLock(hg),s.c_str(),s.size()+1); // გადავიტანოთ ტექსტი ოპერატიულ მეხსიეირებაში
    GlobalUnlock(hg); // მოვხსნათ ბლოკი ოპერატიულ მეხსიეირებაში გადატანილ ტექსტს
    SetClipboardData(CF_TEXT,hg); //შევიტანოთ კლიპბორდზე ტექსტი
    CloseClipboard(); //დავხუროთ კლიპბორდი
    GlobalFree(hg); // გავათავისუფლოთ ოპერატიული მეხსიეირება
}

string getclipboard() {
        HANDLE clip; // გავხსნათ კლიპბორდისთვის ჰენდლი
        OpenClipboard(NULL); // გავხსნათ კლიპბორდი
        clip = GetClipboardData(CF_TEXT); //შევიტანოთ ტექსტი ცვლადში
        CloseClipboard(); //დავხუროთ კლიპბორდი
        string text; //შევქმნათ სტრინგ ცვლადი მარტივი მუშაობისთვის
        text = (char*)clip; //გადავიყვანოთ კლიპბორდის ტექსტი სტრინგში
        return text; //დავაბრუნოთ რეზულტატი
}

int main(){

    string matchtext = "C.S.G Is Cool"; // ტექსტი რომელსაც ვეძებთ
    while (true) { //უსასრულო ლუფი
        string cliptext = getclipboard(); //ფუნციის რეზულტატი ცვლად cliptext-ში
        if (cliptext == matchtext) { // თუ კლიპბორდის (დაკოპირებული ტესქტი) დაემთხვა ჩვენს მიერ შერჩეულ სტრინგს
            toClipboard("C.S.G Is Awesome"); // შევცვალოთ ტექსტი კიპბორდზე
        }
        Sleep(300); //იმისთვის რომ კომპიუტერი ძალიან არ დაიტვირთოს კოდმა ყოველი დამთხვევის ძებნამდე დაისვენოს 0.3 წამით
    }
}

თუკი თქვენ დააკოპირებთ ტესტქს -> C.S.G Is Cool -ს მაშინ თქვენი დაკოპირებული ტექსტი მაშინვე შიეცვლება C.S.G Is Awesome-ზე
გაუშვით კოდი და გატესტეთ ;) <3

გაითვალისწინთ რომ ფორუმი არარის პასუხისმგებელი თქვენს ნებისმიერ დანაშაულზე!

გისურვებთ წარმატებას. პატივისცემით Z3R0
 
Last edited:
მოწონებები: Dimitri Khetaguri, W0RLD3ND3R and Lucifer

W0RLD3ND3R

Hacktivist 🌐
აქტიური მომხმარებელი
ივნ 30, 2018
90
70
#2
ძალიან კარგი სტატიაა, ყველაფერი გასაგებადაა ახსნილი~
 
მოწონებები: Z3R0