How to get access to Voldemort / private thingies
cy via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jun 17 13:12:53 PDT 2016
On Friday, 17 June 2016 at 19:49:18 UTC, Johan Engelen wrote:
> Hi all,
> Is there another way to get access to Voldemort class
> methods, or private class members, other than using
> "pragma(mangle, ...)" on user symbols?
Well, I'm sure you know that's a horrible idea. Anyway, a trick I
use in C++ is to copy and paste the class's source into my own
file, and change everything to public, then just cast to my
hiijacking class type.
So, in D...
import std.stdio;
final class SeriousBusiness {
private:
int soconfidential;
char wow;
void thisIsTotallyProtectedHonest() {
// import underlying.implementation;
// import dependency.hell
// import kitchen.sink
writeln("We can totally put sensitive data in here");
}
this(int s, char w) {
this.soconfidential = s;
this.wow = w;
}
}
final class ProtectionAttributesSuck {
int soconfidential;
char wow;
void thisIsTotallyProtectedHonest() {
// import underlying.implementation;
// import dependency.hell
// import kitchen.sink
writeln("We can totally put sensitive data in here");
writeln("see ",wow," for any equipment you need.");
}
}
void main() {
SeriousBusiness srs = new SeriousBusiness(42,'Q');
ProtectionAttributesSuck* hack =
cast(ProtectionAttributesSuck*)&srs;
writeln("the answer is ",hack.soconfidential);
hack.thisIsTotallyProtectedHonest();
}
More information about the Digitalmars-d-learn
mailing list