I have added a global pointer, so as were expected ida shows static address.
PHP Code:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
#include <string>
using namespace std;
class Object {
public:
bool dummy;
int someField;
Object* child;
};
Object *gObp;
void foo() {
Object *obp = new Object();
gObp = new Object();
obp->dummy = false;
obp->someField = 3;
gObp->dummy = false;
gObp->someField = 1;
cout << std::hex << &obp << endl;
cout << std::hex << obp << endl;
cout << std::hex << &obp->someField << endl;
cout << std::dec << obp->someField << endl;
string input = "";
int secretNumber = 5;
int myNumber = 0;
while (true) {
cout << "Please enter a valid number: ";
getline(cin, input);
stringstream myStream(input);
if (myStream >> myNumber) {
if (myNumber == 0) {
cout << "last " << obp->someField << endl;
continue;
}
obp->someField = myNumber;
gObp->someField = myNumber;
if (myNumber == secretNumber ) {
cout << "You win" << endl;
break;
} else {
cout << "access denied " << obp->someField << endl;
}
} else {
cout << "Invalid number, please try again" << endl;
}
}
delete obp;
}
int _tmain(int argc, _TCHAR* argv[]) {
foo();
cout << "final " << gObp->someField << endl;
string input = "";
cin >> input;
delete gObp;
return 0;
}
from olly
Code:
MOV EAX,DWORD PTR DS:[A2B1A0]
and we can read it
Code:
ReadDword(ReadDword(moduleBaseAddressById + 0x00CB1A0) + 0x4