Add Example08 to the project, rewrite GetFunctionPointer started.
This commit is contained in:
+3
-1
@@ -56,8 +56,9 @@ DLL_METHOD intptr_t DLL_CALL BP_GetFunctionPointer()
|
||||
if (*(curPtr + 2) == 0x57) // push edi
|
||||
if (*(curPtr + 3) == 0x55) // push ebp
|
||||
if (*(curPtr + 4) == 0x89 && *(curPtr + 5) == 0xE5) // mov ebp,esp
|
||||
return (intptr_t)curPtr;
|
||||
return reinterpret_cast<intptr_t>(curPtr);
|
||||
}
|
||||
// This can be done more efficiently, just look twice for the return address.
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -74,6 +75,7 @@ DLL_METHOD intptr_t DLL_CALL BP_GetVariablePointer(int32_t pVariable)
|
||||
pop ReturnAddress; // Just like this.
|
||||
mov esp, [StackPointer]; // And then reset the Stack Pointer.
|
||||
}
|
||||
|
||||
// The Variable pointer that is used is at -9 bytes offset to the return address.
|
||||
return *reinterpret_cast<int32_t*>(ReturnAddress - 9);
|
||||
}
|
||||
|
||||
@@ -213,6 +213,11 @@
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="Examples\Example08.bb">
|
||||
<Link>Examples\Example08.bb</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
<UniqueIdentifier>{df5bf7dd-7995-49a8-b534-f2c83a65ad87}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Blitz Files\Examples">
|
||||
<UniqueIdentifier>{2045f2b8-f3b8-4e65-80eb-459d4e00cd5a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
@@ -48,32 +51,35 @@
|
||||
<None Include="BlitzPointer.decls">
|
||||
<Filter>Blitz Files</Filter>
|
||||
</None>
|
||||
<None Include="Examples\BlitzPointer.ipf">
|
||||
<Filter>Blitz Files</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example_Shared.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example01.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example02.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example03.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example04.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example05.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example06.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example07.bb">
|
||||
<Filter>Blitz Files</Filter>
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\Example08.bb">
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
<None Include="Examples\BlitzPointer.ipf">
|
||||
<Filter>Blitz Files\Examples</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user