Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Original von +++ATH0
Also meine Idee wäre so:
Code:void myFunc() { __asm MOV EAX, 0xFFFFFFFF __asm RET } void myFuncEnd(){} int main() { unsigned long myFuncLen = (long)myFuncEnd - (long)myFunc; return myFuncLen; }
Original von Lesco
[...]
Naja, dabei nimmt man aber an, dass die Funktionen auch schön so in der Reihenfolge in der Binary landen, wie sie im Source stehen, was nicht unbedingt der Fall sein muss. Völlig sicher kann man das aber auch nicht festellen, da man es vom Sourcecode aus nicht wissen kann.
Original von Lesco
Naja, dabei nimmt man aber an, dass die Funktionen auch schön so in der Reihenfolge in der Binary landen, wie sie im Source stehen, was nicht unbedingt der Fall sein muss. Völlig sicher kann man das aber auch nicht festellen, da man es vom Sourcecode aus nicht wissen kann.
void MyFunction()
{
//Code here
}
int main()
{
int Size = 0;
BYTE* FunctionPtr = &MyFunction;
while(*FunctionPtr != 0xC3)
{
Size++;
FunctionPtr++;
}
cout << "Function Length: " << Size << endl;
}
Original von Inliferty
Also was der Code tut ist einfach erklärt:
Er zählt solange 1 dazu bis er an eine Stelle angekommen wo ein 0xC3 steht (Opcode für RETN)
Solange du kein Inline-Assembler mit einem RETN verwendest sollte der Code großteils funktionieren.
_asm
{
jmp weiter
db 12,34,56,78,90,12,34 ... <- eindeutiger Hash
weiter:
}