OSDN Git Service

Plugins: Add DecompileJVM, DecompileIL and DisassembleNative plugin
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 22 Aug 2021 14:38:49 +0000 (23:38 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 22 Aug 2021 14:38:49 +0000 (23:38 +0900)
ALL.vs2017.sln
ALL.vs2019.sln
Plugins/Commands/dumpbin/dumpbin.bat [new file with mode: 0644]
Plugins/Commands/ildasm/ildasm.bat [new file with mode: 0644]
Plugins/Plugins.xml

index 1c4e229..01f6365 100644 (file)
@@ -367,6 +367,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "googletest", "googletest",
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "googletest", "Externals\googletest\googletest\googletest.vcxitems", "{9EE35458-B145-444F-92B7-27FF72112C42}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dumpbin", "dumpbin", "{B22D4554-B639-44BA-BC70-9FD7CCC5B424}"
+       ProjectSection(SolutionItems) = preProject
+               Plugins\Commands\dumpbin\dumpbin.bat = Plugins\Commands\dumpbin\dumpbin.bat
+       EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ildasm", "ildasm", "{64739D83-1BDF-409F-81F3-9320494A199A}"
+       ProjectSection(SolutionItems) = preProject
+               Plugins\Commands\ildasm\ildasm.bat = Plugins\Commands\ildasm\ildasm.bat
+       EndProjectSection
+EndProject
 Global
        GlobalSection(SharedMSBuildProjectFiles) = preSolution
                Externals\googletest\googletest\googletest.vcxitems*{0a3727b1-51e7-4702-ad0c-8aee317ea510}*SharedItemsImports = 4
@@ -662,8 +672,8 @@ Global
                {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|ARM64.Build.0 = Release|ARM64
                {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|Win32.ActiveCfg = Release|Win32
                {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|Win32.Build.0 = Release|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|x64.ActiveCfg = Debug|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|x64.Build.0 = Debug|x64
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|x64.ActiveCfg = Release|x64
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Release|x64.Build.0 = Release|x64
                {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Test|ARM64.ActiveCfg = Debug|ARM64
                {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Test|Win32.ActiveCfg = Debug|Win32
                {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Test|x64.ActiveCfg = Debug|x64
@@ -1083,6 +1093,8 @@ Global
                {0D414491-BB15-470B-9A50-443BA252CCD4} = {48C9E053-F40B-4FB4-984C-C154810EFB54}
                {EEFF904A-CA86-4FB8-BAC5-D508CBF586AA} = {CE514278-A13F-4F6A-93EB-5653410AC214}
                {9EE35458-B145-444F-92B7-27FF72112C42} = {EEFF904A-CA86-4FB8-BAC5-D508CBF586AA}
+               {B22D4554-B639-44BA-BC70-9FD7CCC5B424} = {BB290B2D-F5B9-4552-AE32-9319C03E41C0}
+               {64739D83-1BDF-409F-81F3-9320494A199A} = {BB290B2D-F5B9-4552-AE32-9319C03E41C0}
        EndGlobalSection
        GlobalSection(ExtensibilityGlobals) = postSolution
                SolutionGuid = {CC2E4F75-FADC-4F44-BD62-47A321828081}
index 79a9e96..406cfb0 100644 (file)
@@ -367,6 +367,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "googletest", "googletest",
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "googletest", "Externals\googletest\googletest\googletest.vcxitems", "{9EE35458-B145-444F-92B7-27FF72112C42}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dumpbin", "dumpbin", "{B22D4554-B639-44BA-BC70-9FD7CCC5B424}"
+       ProjectSection(SolutionItems) = preProject
+               Plugins\Commands\dumpbin\dumpbin.bat = Plugins\Commands\dumpbin\dumpbin.bat
+       EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ildasm", "ildasm", "{64739D83-1BDF-409F-81F3-9320494A199A}"
+       ProjectSection(SolutionItems) = preProject
+               Plugins\Commands\ildasm\ildasm.bat = Plugins\Commands\ildasm\ildasm.bat
+       EndProjectSection
+EndProject
 Global
        GlobalSection(SharedMSBuildProjectFiles) = preSolution
                Externals\googletest\googletest\googletest.vcxitems*{0a3727b1-51e7-4702-ad0c-8aee317ea510}*SharedItemsImports = 4
@@ -1083,6 +1093,8 @@ Global
                {0D414491-BB15-470B-9A50-443BA252CCD4} = {48C9E053-F40B-4FB4-984C-C154810EFB54}
                {EEFF904A-CA86-4FB8-BAC5-D508CBF586AA} = {CE514278-A13F-4F6A-93EB-5653410AC214}
                {9EE35458-B145-444F-92B7-27FF72112C42} = {EEFF904A-CA86-4FB8-BAC5-D508CBF586AA}
+               {B22D4554-B639-44BA-BC70-9FD7CCC5B424} = {BB290B2D-F5B9-4552-AE32-9319C03E41C0}
+               {64739D83-1BDF-409F-81F3-9320494A199A} = {BB290B2D-F5B9-4552-AE32-9319C03E41C0}
        EndGlobalSection
        GlobalSection(ExtensibilityGlobals) = postSolution
                SolutionGuid = {CC2E4F75-FADC-4F44-BD62-47A321828081}
diff --git a/Plugins/Commands/dumpbin/dumpbin.bat b/Plugins/Commands/dumpbin/dumpbin.bat
new file mode 100644 (file)
index 0000000..b917846
--- /dev/null
@@ -0,0 +1,18 @@
+@echo off
+if exist "%APPDATA%\WinMerge\Commands\dumpbin\dumpbinpath.txt" (
+  for /f "usebackq tokens=*" %%i in (%APPDATA%\WinMerge\Commands\dumpbin\dumpbinpath.txt) do set DUMPBIN_PATH=%%i
+)
+if not exist "%DUMPBIN_PATH%" (
+  for /f "usebackq tokens=*" %%i in (`"%programfiles(x86)%\microsoft visual studio\installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
+    set InstallDir=%%i
+  )
+  if exist "%InstallDir%\Common7\Tools\vsdevcmd.bat" (
+    call "%InstallDir%\Common7\Tools\vsdevcmd.bat"
+  )
+  mkdir "%APPDATA%\WinMerge\Commands\dumpbin\" 2> NUL
+  where dumpbin.exe > "%APPDATA%\WinMerge\Commands\dumpbin\dumpbinpath.txt"
+  if exist "%APPDATA%\WinMerge\Commands\dumpbin\dumpbinpath.txt" (
+    for /f "usebackq tokens=*" %%i in (%APPDATA%\WinMerge\Commands\dumpbin\dumpbinpath.txt) do set DUMPBIN_PATH=%%i
+  )
+)
+"%DUMPBIN_PATH%" %*
diff --git a/Plugins/Commands/ildasm/ildasm.bat b/Plugins/Commands/ildasm/ildasm.bat
new file mode 100644 (file)
index 0000000..4c4a864
--- /dev/null
@@ -0,0 +1,18 @@
+@echo off
+if exist "%APPDATA%\WinMerge\Commands\ildasm\ildasmpath.txt" (
+  for /f "usebackq tokens=*" %%i in (%APPDATA%\WinMerge\Commands\ildasm\ildasmpath.txt) do set ILDASM_PATH=%%i
+)
+if not exist "%ILDASM_PATH%" (
+  for /f "usebackq tokens=*" %%i in (`"%programfiles(x86)%\microsoft visual studio\installer\vswhere.exe" -latest -products * -property installationPath`) do (
+    set InstallDir=%%i
+  )
+  if exist "%InstallDir%\Common7\Tools\vsdevcmd.bat" (
+    call "%InstallDir%\Common7\Tools\vsdevcmd.bat"
+  )
+  mkdir "%APPDATA%\WinMerge\Commands\ildasm\" 2> NUL
+  where ildasm.exe > "%APPDATA%\WinMerge\Commands\ildasm\ildasmpath.txt"
+  if exist "%APPDATA%\WinMerge\Commands\ildasm\ildasmpath.txt" (
+    for /f "usebackq tokens=*" %%i in (%APPDATA%\WinMerge\Commands\ildasm\ildasmpath.txt) do set ILDASM_PATH=%%i
+  )
+)
+"%ILDASM_PATH%" %*
index 83bb73f..fd90ec8 100644 (file)
       <command>"${WINMERGE_HOME}\Commands\apache-tika\tika.bat" "${SRC_FILE}" "${DST_FILE}" ${*}</command>
     </unpack-file>
   </plugin>
+  <plugin name="DecompileJVM">
+    <event value="FILE_PACK_UNPACK" />
+    <description value="JVM bytecode decompiler with javap. &#xD;&#xA;Arguments: Command line options passed to the javap command." />
+    <file-filters value="\.class$" />
+    <is-automatic value="false" />
+    <unpacked-file-extension value=".txt" />
+    <extended-properties value="ProcessType=Decompilation;MenuCaption=Decompile JVM Bytecode" />
+    <arguments value="-c" />
+    <unpack-file>
+      <command>cmd /c javap ${*} "${SRC_FILE}" > "${DST_FILE}"</command>
+    </unpack-file>
+  </plugin>
+  <plugin name="DecompileIL">
+    <event value="FILE_PACK_UNPACK" />
+    <description value="IL decompiler with ildasm. &#xD;&#xA;Arguments: Command line options passed to the ildasm command." />
+    <file-filters value="\.obj$;\.lib$;\.winmd$;\.exe$;\.dll$" />
+    <is-automatic value="false" />
+    <unpacked-file-extension value=".asm" />
+    <extended-properties value="ProcessType=Decompilation;MenuCaption=Decompile IL Bytecode" />
+    <arguments value="/text" />
+    <unpack-file>
+      <command>"${WINMERGE_HOME}\Commands\ildasm\ildasm.bat" ${*} "${SRC_FILE}" > "${DST_FILE}"</command>
+    </unpack-file>
+  </plugin>
+  <plugin name="DisassembleNative">
+    <event value="FILE_PACK_UNPACK" />
+    <description value="Native code disassembler with dumpbin. &#xD;&#xA;Arguments: Command line options passed to the dumpbin command." />
+    <file-filters value="\.obj$;\.lib$;\.exe$;\.dll$" />
+    <is-automatic value="false" />
+    <unpacked-file-extension value=".asm" />
+    <extended-properties value="ProcessType=Decompilation;MenuCaption=Disassemble Native Code" />
+    <arguments value="/disasm:nobytes" />
+    <unpack-file>
+      <command>"${WINMERGE_HOME}\Commands\dumpbin\dumpbin.bat" ${*} "${SRC_FILE}" > "${DST_FILE}"</command>
+    </unpack-file>
+  </plugin>
   <!--
   <plugin name="VBScript-test">
     <event value="FILE_PACK_UNPACK" />