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 | void HelloWorld_start()␊ |
37 | {␊ |
38 | ␉//printf("Hooking 'ExecKernel'\n");␊ |
39 | ␉register_hook_callback("ExecKernel", &helloWorld);␊ |
40 | ␉register_hook_callback("Kernel Start", &helloWorld);␊ |
41 | ␊ |
42 | }␊ |
43 | ␊ |
44 | void HW::printHello()␊ |
45 | {␊ |
46 | ␉printf("[%d] HelloWorld from a c++ function\n", id);␊ |
47 | }␊ |
48 | ␊ |
49 | void HW::setId(int id)␊ |
50 | {␊ |
51 | ␉this->id = id;␊ |
52 | }␊ |
53 | |