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 | ␉virtual ~HW();␊ |
24 | ␊ |
25 | };␊ |
26 | ␊ |
27 | void helloWorld(void* binary, void* arg2, void* arg3, void* arg4)␊ |
28 | {␊ |
29 | ␉HW* obj = new HW;␊ |
30 | ␉HW* obj2 = new HW;␊ |
31 | ␉obj->setId(1);␊ |
32 | ␉obj->printHello();␊ |
33 | ␉delete obj;␊ |
34 | ␉␊ |
35 | ␉obj2->setId(2);␊ |
36 | ␉obj2->printHello();␊ |
37 | ␉delete obj2;␊ |
38 | ␊ |
39 | ␉printf("Hello world from ExecKernel hook. Binary located at 0x%X\n", binary);␊ |
40 | ␉getchar();␊ |
41 | }␊ |
42 | ␊ |
43 | void HelloWorld_start()␊ |
44 | {␊ |
45 | ␉//printf("Hooking 'ExecKernel'\n");␊ |
46 | ␉register_hook_callback("ExecKernel", &helloWorld);␊ |
47 | ␉register_hook_callback("Kernel Start", &helloWorld);␊ |
48 | }␊ |
49 | ␊ |
50 | void HW::printHello()␊ |
51 | {␊ |
52 | ␉//cout << "[" << id << "] HelloWorld from a c++ function\n";␊ |
53 | ␉printf("[%d] HelloWorld from a c++ function\n", id);␊ |
54 | }␊ |
55 | ␊ |
56 | void HW::setId(int id)␊ |
57 | {␊ |
58 | ␉this->id = id;␊ |
59 | }␊ |
60 | ␊ |
61 | HW::~HW()␊ |
62 | {␊ |
63 | }␊ |
64 | |