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