| 1 | /*␊ |
| 2 | * Copyright (c) 2009 Evan Lojewski. All rights reserved.␊ |
| 3 | *␊ |
| 4 | */␊ |
| 5 | #include <cstdlib>␊ |
| 6 | #include <iostream>␊ |
| 7 | #include <modules>␊ |
| 8 | ␊ |
| 9 | using namespace std;␊ |
| 10 | ␊ |
| 11 | class HW {␊ |
| 12 | private:␊ |
| 13 | ␉int id;␊ |
| 14 | public:␊ |
| 15 | ␉virtual void setId( int id );␊ |
| 16 | ␉virtual void printHello( void );␊ |
| 17 | };␊ |
| 18 | ␊ |
| 19 | void helloWorld(void* binary, void* arg2, void* arg3, void* arg4)␊ |
| 20 | {␊ |
| 21 | ␉HW* obj = new HW;␊ |
| 22 | ␉HW* obj2 = new HW;␊ |
| 23 | ␉obj->setId(1);␊ |
| 24 | ␉obj->printHello();␊ |
| 25 | ␉delete obj;␊ |
| 26 | ␉␊ |
| 27 | ␉obj2->setId(2);␊ |
| 28 | ␉obj2->printHello();␊ |
| 29 | ␉delete obj2;␊ |
| 30 | ␊ |
| 31 | ␉printf("Hello world from ExecKernel hook. Binary located at 0x%X\n", binary);␊ |
| 32 | ␉getchar();␊ |
| 33 | ␉␊ |
| 34 | ␉//␊ |
| 35 | ␉␊ |
| 36 | }␊ |
| 37 | ␊ |
| 38 | void HelloWorld_start()␊ |
| 39 | {␊ |
| 40 | ␉//printf("Hooking 'ExecKernel'\n");␊ |
| 41 | ␉register_hook_callback("ExecKernel", &helloWorld);␊ |
| 42 | ␉register_hook_callback("Kernel Start", &helloWorld);␊ |
| 43 | ␊ |
| 44 | }␊ |
| 45 | ␊ |
| 46 | void HW::printHello()␊ |
| 47 | {␊ |
| 48 | ␉//cout << "[" << id << "] HelloWorld from a c++ function\n";␊ |
| 49 | ␉printf("[%d] HelloWorld from a c++ function\n", id);␊ |
| 50 | }␊ |
| 51 | ␊ |
| 52 | void HW::setId(int id)␊ |
| 53 | {␊ |
| 54 | ␉this->id = id;␊ |
| 55 | }␊ |
| 56 | |