Skip to content

Commit

Permalink
dpWithTDisasm option (これを無効化したら tDisasm 使わなくなる)
Browse files Browse the repository at this point in the history
  • Loading branch information
i-saint committed Sep 11, 2013
1 parent c2e29ca commit e579e2a
Show file tree
Hide file tree
Showing 9 changed files with 562 additions and 44 deletions.
4 changes: 4 additions & 0 deletions DynamicPatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@

#ifndef dpDisable

// this option makes dpGetUnpatched() work. and makes dependency for disasm.
// dpGetUnpatched() returns the function that behaves as old (before patch) function.
#define dpWithTDisasm

#if _MSC_VER>=1600 // dpPatchByFile() require C++11
# define dpWithStdFunction
#endif // _MSC_VER>=1600
Expand Down
89 changes: 88 additions & 1 deletion DynamicPatcher.sln

Large diffs are not rendered by default.

14 changes: 5 additions & 9 deletions DynamicPatcher.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,10 @@
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="disasm-lib\cpu.h" />
<ClInclude Include="disasm-lib\disasm.h" />
<ClInclude Include="disasm-lib\disasm_x86.h" />
<ClInclude Include="disasm-lib\disasm_x86_tables.h" />
<ClInclude Include="disasm-lib\misc.h" />
<ClInclude Include="dpInternal.h" />
<ClInclude Include="DynamicPatcher.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="disasm-lib\cpu.c" />
<ClCompile Include="disasm-lib\disasm.c" />
<ClCompile Include="disasm-lib\disasm_x86.c" />
<ClCompile Include="disasm-lib\misc.c" />
<ClCompile Include="dpBinary.cpp" />
<ClCompile Include="dpBuilder.cpp" />
<ClCompile Include="dpConfig.cpp" />
Expand All @@ -57,6 +48,11 @@
<ClCompile Include="dpPatcher.cpp" />
<ClCompile Include="DynamicPatcher.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="disasm.vcxproj">
<Project>{d6a7f953-26bf-45f6-92fa-f3b6ab245c1b}</Project>
</ProjectReference>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7CCD61E5-5F56-4050-BACC-1467972D2247}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
Expand Down
32 changes: 0 additions & 32 deletions DynamicPatcher.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,12 @@
<ClCompile Include="dpLoader.cpp" />
<ClCompile Include="dpPatcher.cpp" />
<ClCompile Include="DynamicPatcher.cpp" />
<ClCompile Include="disasm-lib\cpu.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="disasm-lib\disasm.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="disasm-lib\disasm_x86.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="disasm-lib\misc.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="dpFoundation.cpp" />
<ClCompile Include="dpContext.cpp" />
<ClCompile Include="dpConfig.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DynamicPatcher.h" />
<ClInclude Include="disasm-lib\cpu.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\disasm.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\disasm_x86.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\disasm_x86_tables.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\misc.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="dpInternal.h" />
</ItemGroup>
<ItemGroup>
<Filter Include="disasm-lib">
<UniqueIdentifier>{350a6ebe-5c55-4219-b806-031e7e991abf}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
3 changes: 2 additions & 1 deletion Test/Test_Simple/Test_Simple.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,11 @@ int main(int argc, char *argv[])
dpFinalize();
}


#ifdef dpWithTDisasm
dpOnLoad(
dpPatchAddressToAddress(&puts, &puts_hook);
)
#endif // dpWithTDisasm

dpOnUnload(
printf("unloaded.\n");
Expand Down
410 changes: 410 additions & 0 deletions disasm.vcxproj

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions disasm.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="disasm-lib\cpu.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="disasm-lib\disasm.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="disasm-lib\disasm_x86.c">
<Filter>disasm-lib</Filter>
</ClCompile>
<ClCompile Include="disasm-lib\misc.c">
<Filter>disasm-lib</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="disasm-lib\cpu.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\disasm.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\disasm_x86.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\disasm_x86_tables.h">
<Filter>disasm-lib</Filter>
</ClInclude>
<ClInclude Include="disasm-lib\misc.h">
<Filter>disasm-lib</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="disasm-lib">
<UniqueIdentifier>{350a6ebe-5c55-4219-b806-031e7e991abf}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
2 changes: 2 additions & 0 deletions dpContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,11 @@ void dpContext::unpatchAll()

void* dpContext::getUnpatched(void *target)
{
#ifdef dpWithTDisasm
if(dpPatchData *pd = m_patcher->findPatchByAddress(target)) {
return pd->unpatched;
}
#endif // dpWithTDisasm
return nullptr;
}

Expand Down
13 changes: 12 additions & 1 deletion dpPatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@

#include "DynamicPatcher.h"
#include "dpInternal.h"
#include "disasm-lib/disasm.h"
#include <regex>
#ifdef dpWithTDisasm
#include "disasm-lib/disasm.h"
#endif // dpWithTDisasm

static size_t dpCopyInstructions(void *dst, void *src, size_t minlen)
{
#ifdef dpWithTDisasm

size_t len = 0;
#ifdef _M_X64
ARCHITECTURE_TYPE arch = ARCH_X64;
Expand Down Expand Up @@ -56,6 +60,13 @@ static size_t dpCopyInstructions(void *dst, void *src, size_t minlen)
CloseDisassembler(&dis);
}
return len;

#else // dpWithTDisasm

memcpy(dst, src, minlen);
return minlen;

#endif // dpWithTDisasm
}

static BYTE* dpAddJumpInstruction(BYTE* from, BYTE* to)
Expand Down

0 comments on commit e579e2a

Please sign in to comment.