Function execution time Example. (C++)


std::chrono::system_clock::time_point start = std::chrono::system_clock::now();

myFunc();

std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;

std::cout << "The time taken to perform the function myFunc()  : " << sec.count() << " seconds" << std::endl;


Create Thread Class Example (C++)


The class "std :: thread" exists but has been created for fun.



ThreadClass.h

#pragma once
#include <iostream>
#include <windows.h>

class ThreadClass
{
public:
ThreadClass();
~ThreadClass();

void start();
void stop();
bool isRun();

static DWORD __stdcall run_(void* p);

virtual void run() = 0;

protected:
bool threadRunFlag;
HANDLE m_Thread;
};




ThreadClass.cpp


#include "ThreadClass.h"


//
//\brief constructor,
//\param
//\return
//
ThreadClass::ThreadClass()
{
this->threadRunFlag = false;
}


//
//\brief destructor
//\param
//\return
//
ThreadClass::~ThreadClass()
{
if (this->isRun()) {
this->stop();
}
}

//
//\brief  thread start
//\param
//\return
//
void ThreadClass::start()
{
m_Thread = CreateThread(0, 0, run_, (void*)this, 0, 0);
}

///
///\brief thread end
///\param
///\return
///
void ThreadClass::stop()
{
this->threadRunFlag = false;
// to be...
}

//
//\brief thread status
//\param
//\return
//
bool ThreadClass::isRun()
{
return this->threadRunFlag;
}

//
//\brief thread run
//\param
//\return
//
DWORD __stdcall ThreadClass::run_(void * p)
{
ThreadClass* const THISCLASS = static_cast<ThreadClass*>(p);
THISCLASS->threadRunFlag = true;
THISCLASS->run();

return 0;
}

Shared folder permission setting (If you can not access the shared folder)


Problem :
I set up a shared folder in Virtualbox, but I can not access the shared folder.  

Solve :
Installing the VirtualBox Guest Additions  -> Automatically mount shared folders with VirtualBox ("/media /sh_foldername" will be shown) -> Add Ubuntu users to your vboxsf group

$ sudo -s
Input root password

$ usermod -aG vboxsf <youruser>

$ reboot

Qmake error (QT)


Error:
linux Could not determine which "make" command to run. Check the "make" step in the build configuration.

Solve :
$ sudo apt install cmake g++
$ sudo apt remove libgl1-mesa-dev
$ sudo apt install libgl1-mesa-dev

Hooking Example (case 2. class method hooking)


This is an example of hooking a class function.
This article doesn't have many examples of hooking c ++ classes.

The following code:
Class TestClass {
Public:
int myPrintf(const std::string & id, const int & value);
}


Hook code:

int TestClass::myPrintf(const std::string & id, const int & value) {
    typedef int (TestClass::*HookFunction)(const std::string & id, const int & value);
    static HookFunction orgMethod = 0;
    if (orgMethod == 0) {
        void *tmpPtr = dlsym(RTLD_NEXT, "Mangling Name");
        memcpy(&orgMethod, &tmpPtr, sizeof(void *));
    }
   
    int orgRetValue;
    orgRetValue = (this->*orgMethod)(id, value);

    return orgRetValue;


#C #C++ #Linux #Embedded #Hooking Example #Hooking #Class Hooking

Hooking Example (case 1. getchar() / rand())


 Hooking Example:
 1. Getchar() / rand
   only C , and this code is meaningless code. Only test!


Target code.
- target.c
  : gcc –o target target.c




Hook code.
- hook.c
  : gcc -shared -fPIC -o hook.so main.c –ldl




Exec:


Normal:
$  ./target


Hook:
$LD_PRELOAD="/home/xxxx/hook_test/hook/hook.so" ./target






*the blue box : privacy.

#C #C++ #Linux #Embedded #Hooking Example #Hooking 

API Hooking


• API Hooking
- A technique to intercept API calls to get control
- The most widely used technique with Message hooking

API ?
- An interface to control the functions provided by the operating system or programming language.
- On Windows, use the Win32 API




*As an example of a process, all processes load kernel32.dll and access the system through ntdll.dll.
*Win32 API: Windows OS can't directly use system resources(memory, file, network, video, sound, etc.) by user applications. It is directly managed by the OS.(due to stability, security, efficiency, and so on.)
=> Using the Win32 API (the meaningful program can't be created without API function.)

#C #C++ #Linux #Embedded #Hooking Example #Hooking #API #API Hooking

Apartment Buying Guide 2025: Shocking Red Flags You Should NEVER Ignore!

 🏙️ Apartment Buying Guide 2025: Shocking Red Flags You Should NEVER Ignore! 🚨 Are you thinking about buying an apartment in 2025? 🏢  It’...