39ded8c54d
When the argument using to describe size_is is an out parameter, we don't know it's value and it cannot be used to describe the size of another parameter. That's why in that case we can only set a max range |
||
---|---|---|
Qt | ||
RpcCommon | ||
RpcCore | ||
RpcDecompiler | ||
RpcView | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
README.md | ||
_config.yml |
README.md
RpcView
RpcView is an open-source tool to explore and decompile all RPC functionalities present on a Microsoft system.
You can get the last official release.
Or you can download the last automatically built release
Warning: you have to install "Microsoft Visual C++ 2015 Redistributable" to use RpcView.
How to add a new RPC runtime
Basically you have two possibilities to support a new RPC runtime (rpcrt4.dll) version:
- The easy way: just edit the RpcInternals.h file in the corresponding RpcCore directories (32 and 64-bit versions) to add your runtime version in the RPC_CORE_RUNTIME_VERSION table.
- The best way: reverse the rpcrt4.dll to define the required structures used by RpcView, e.g. RPC_SERVER, RPC_INTERFACE and RPC_ADDRESS.
Currently, the supported versions are organized as follows:
- RpcCore1 for Windows XP
- RpcCore2 for Windows 7
- RpcCore3 for Windows 8
- RpcCore4 for Windows 8.1 and 10
Compilation
Required elements to compiled the project:
- Visual Studio (currently Visual Studio 2015 community)
- CMake (at least 3.0.2)
- Qt5 (currently 5.9.1)
Before running CMake you have to set the CMAKE_PREFIX_PATH environment variable with the current Qt path, for instance (x64):
set CMAKE_PREFIX_PATH=C:\Qt\Qt5.9.1\5.9.1\msvc2015_64
Then you can run CMake to produce the project solution.
Here is an example to generate the x64 solution with Visual Studio 2015 from the RpcView/Build/x64
directory:
cmake -G"Visual Studio 14 2015 Win64" ../../
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
[RpcView]
[RpcDecompiler]
[RpcCore1_32bits]
[RpcCore2_32bits]
[RpcCore2_64bits]
[RpcCore3_32bits]
[RpcCore3_64bits]
[RpcCore4_32bits]
[RpcCore4_64bits]
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Dev/RpcView/Build/x64
To produce the Win32 solution:
set CMAKE_PREFIX_PATH=C:\Qt\Qt5.9.1\5.9.1\msvc2015
Then from the RpcView/Build/x86
directory:
cmake -G"Visual Studio 14 2015" ../../
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
[RpcView]
[RpcDecompiler]
[RpcCore1_32bits]
[RpcCore2_32bits]
[RpcCore3_32bits]
[RpcCore4_32bits]
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Dev/RpcView/Build/x86
Now you can compile the solution with Visual Studio or CMAKE:
cmake --build . --config Release
RpcView32 binaries are produced in the RpcView/Build/bin/x86
directory and RpcView64 ones in the RpcView/Build/bin/x64
Acknowledgements
- Jeremy
- Julien
- Yoanne
- Bruno