19 Commits

Author SHA1 Message Date
silverf0x 3de26eaa04 Update README.md 2017-11-08 21:02:34 +01:00
silverf0x d796ddeeb3 Update Resource files to add build version 2017-11-08 20:52:59 +01:00
silverf0x 32b1f9c0d2 Update README.md 2017-11-08 20:27:13 +01:00
silverf0x cf5615c21c Fix unreachable code in RpcCoreManager.c when building the x86 version 2017-11-07 23:28:12 +01:00
silverf0x a5e4fd2c43 Increase compiler warning level to W4 with WX 2017-11-07 23:18:16 +01:00
silverf0x 0554224b54 Remove the /WX (warnings as errors) compiler option 2017-11-07 20:55:05 +01:00
silverf0x 9c0f46d029 Upgrade to Qt5 2017-11-07 20:25:01 +01:00
silverf0x 51e5b1e09f Add support for versions 6.3.9600.18292 and 10.0.17017.1000 2017-11-07 20:22:28 +01:00
silverf0x b8ff63ec59 Add support for version 6.1.7601.23915 2017-11-07 20:21:33 +01:00
silverf0x 30bfa47b8c Fix #4: v0.2.1hangs on Windows RS2 2017-11-07 20:19:28 +01:00
silverf0x 1ac3d4a63c Update CMakeLists.txt to version 0.2.2 2017-10-01 07:11:42 +00:00
silverf0x fa78abfb55 Fix the global RpcServer detection hang 2017-10-01 07:04:06 +00:00
silverf0x 362d32d98f Merge pull request #2 from TogDu/master
support for IDL without win32kExtension
2017-10-30 20:53:20 +00:00
TogDu 3eb61e7076 add support for 6.1.7601.23714 2017-10-30 18:51:24 +01:00
TogDu 99c858af98 Merge branch 'master' of https://github.com/silverf0x/RpcView 2017-10-30 18:36:00 +01:00
TogDu cce523d939 remove pedentic warning (%x / unsigned char* conflict) 2017-05-10 19:27:41 +02:00
TogDu 85ff861717 BUGFIX :
-duplicate type OIF_HEADER_T / Oif_Header_t (more to come)
-support for IDL without win32kExtension structure
2017-05-10 19:25:02 +02:00
TogDu 6b05426e63 CLEANING : break or return, one need to choose ;) 2017-05-10 19:20:05 +02:00
TogDu 6d5625087a support for 6.1.7601.19135 version 2017-05-10 19:17:57 +02:00
40 changed files with 209 additions and 187 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+11 -6
View File
@@ -3,8 +3,13 @@ cmake_minimum_required (VERSION 3.0.2)
project(RpcView)
set(RPCVIEW_VERSION_MAJOR 0)
set(RPCVIEW_VERSION_MINOR 2)
set(RPCVIEW_VERSION_RELEASE 1)
set(RPCVIEW_VERSION_MINOR 3)
set(RPCVIEW_VERSION_RELEASE 0)
if($ENV{APPVEYOR_BUILD_NUMBER})
set(RPCVIEW_VERSION_BUILD $ENV{APPVEYOR_BUILD_NUMBER})
else()
set(RPCVIEW_VERSION_BUILD 0)
endif()
# configure a header file to pass some of the CMake settings to the source code
configure_file (
@@ -19,11 +24,11 @@ include_directories("${PROJECT_BINARY_DIR}")
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_CXX_FLAGS_DEBUG "/W3 /WX /MTd /EHsc /Zi")
set(CMAKE_C_FLAGS_DEBUG "/W4 /WX /MTd /EHsc /Zi")
set(CMAKE_CXX_FLAGS_DEBUG "/W4 /WX /MDd /EHsc /Zi")
set(CMAKE_C_FLAGS_DEBUG "/W4 /WX /MDd /EHsc /Zi")
set(CMAKE_CXX_FLAGS_RELEASE "/W3 /WX /O2 /Oi /Ot /Gy /MT /EHsc /MP")
set(CMAKE_C_FLAGS_RELEASE "/W4 /WX /O2 /Oi /Ot /Gy /MT /EHsc /MP")
set(CMAKE_CXX_FLAGS_RELEASE "/W4 /WX /O2 /Oi /Ot /Gy /MD /EHsc /MP")
set(CMAKE_C_FLAGS_RELEASE "/W4 /WX /O2 /Oi /Ot /Gy /MD /EHsc /MP")
set(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /OPT:REF /OPT:ICF")
+31 -30
View File
@@ -3,45 +3,46 @@
#define QT_BUILD_CONFIGURE
#define NOMINMAX
#include <QtGui/QSortFilterProxyModel>
#include <QtCore/QSortFilterProxyModel>
#include <QtGui/QStandardItemModel>
#include <QtGui/QDockWidget>
#include <QtGui/QLabel>
#include <QtGui/QTreeView>
#include <QtGui/QGridLayout>
#include <QtGui/QGroupBox>
#include <QtGui/QDockWidget>
#include <QtGui/QTextEdit>
#include <QtGui/QLineEdit>
#include <QtGui/QApplication>
#include <QtGui/QFormLayout>
#include <QtGui/QAbstractItemView>
#include <QtWidgets/QDockWidget>
#include <QtWidgets/QLabel>
#include <QtWidgets/QTreeView>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QDockWidget>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QApplication>
#include <QtWidgets/QFormLayout>
#include <QtWidgets/QAbstractItemView>
#include <QtCore/QTimer>
#include <QtGui/QMainWindow>
#include <QtGui/QStatusBar>
#include <QtGui/QAction>
#include <QtGui/QActionGroup>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QAction>
#include <QtWidgets/QActionGroup>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtGui/QPixmap>
#include <QtGui/QTreeWidgetItem>
#include <QtGui/QTreeWidget>
#include <QtGui/QMessageBox>
#include <QtWidgets/QTreeWidgetItem>
#include <QtWidgets/QTreeWidget>
#include <QtWidgets/QMessageBox>
#include <QtCore/QFile>
#include <QtCore/QProcess>
#include <QtGui/QSplashScreen>
#include <QtGui/QHeaderView>
#include <QtWidgets/QSplashScreen>
#include <QtWidgets/QHeaderView>
#include <QtGui/QSyntaxHighlighter>
#include <QtCore/QSettings>
#include <QtCore/QThread>
#include <QtGui/QColorDialog>
#include <QtGui/QInputDialog>
#include <QtGui/QCheckBox>
#include <QtGui/QPushButton>
#include <QtGui/QStackedWidget>
#include <QtWidgets/QColorDialog>
#include <QtWidgets/QInputDialog>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStackedWidget>
#include <QtGui/QKeyEvent>
#include <QtGui/QToolButton>
#include <QtGui/QDialogButtonBox>
#include <QtWidgets/QToolButton>
#include <QtWidgets/QDialogButtonBox>
#include <QtCore/QSignalMapper>
#include <QtWinExtras/qwinfunctions.h>
#endif
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+17 -25
View File
@@ -1,7 +1,15 @@
RpcView
=======
RpcView is a free tool to explore and decompile all RPC functionalities present on a Microsoft system.
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](https://github.com/silverf0x/RpcView/releases).
Or you can download the last [automatically built release](https://ci.appveyor.com/project/silverf0x/rpcview/build/artifacts)
[![Build status](https://ci.appveyor.com/api/projects/status/o5wy6mdk16tuht70?svg=true)](https://ci.appveyor.com/project/silverf0x/rpcview)
**Warning**: you have to install "Microsoft Visual C++ 2015 Redistributable" to use RpcView.
How to add a new RPC runtime
----------------------------------
@@ -25,11 +33,11 @@ Required elements to compiled the project:
* Visual Studio (currently Visual Studio 2015 community)
* CMake (at least 3.0.2)
* Qt4 (currently 4.8.6)
* 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:
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\4.8.6
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:
@@ -49,16 +57,6 @@ cmake -G"Visual Studio 14 2015 Win64" ../../
-- Detecting CXX compile features
-- Detecting CXX compile features - done
[RpcView]
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - not found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found
-- Found Qt4: C:/Qt/4.8.6/bin/qmake.exe (found version "4.8.6")
-- Target is 64 bits
[RpcDecompiler]
[RpcCore1_32bits]
[RpcCore2_32bits]
@@ -72,7 +70,11 @@ cmake -G"Visual Studio 14 2015 Win64" ../../
-- Build files have been written to: C:/Dev/RpcView/Build/x64
```
To produce the Win32 solution with Visual Studio 2015 from the ```RpcView/Build/x86``` directory:
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
cmake -G"Visual Studio 14 2015" ../../
-- The C compiler identification is MSVC 19.0.24215.1
@@ -88,16 +90,6 @@ cmake -G"Visual Studio 14 2015" ../../
-- Detecting CXX compile features
-- Detecting CXX compile features - done
[RpcView]
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - not found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found
-- Found Qt4: C:/Qt/4.8.6/bin/qmake.exe (found version "4.8.6")
-- Target is 32 bits
[RpcDecompiler]
[RpcCore1_32bits]
[RpcCore2_32bits]
+5 -2
View File
@@ -170,7 +170,8 @@ End:
typedef struct{
BOOL bFound;
BOOL bFound;
PRPC_SERVER_T pRpcServer;
}GetRpcServerAddressCallbackCtxt_T;
@@ -193,7 +194,8 @@ BOOL WINAPI GetRpcServerAddressCallback(HANDLE hProcess, UINT Index, VOID PTR_T
if (!ReadProcessMemory(hProcess,pSimpleDictEntry,&RpcInterface,sizeof(RpcInterface),NULL)) goto End;
if ( (RpcInterface.RpcServerInterface.Length==sizeof(RPC_SERVER_INTERFACE_T)) &&
(!memcmp(&RpcInterface.RpcServerInterface.TransferSyntax, &DceRpcSyntaxUuid, sizeof(DceRpcSyntaxUuid))))
(!memcmp(&RpcInterface.RpcServerInterface.TransferSyntax, &DceRpcSyntaxUuid, sizeof(DceRpcSyntaxUuid))) &&
RpcInterface.pRpcServer == pGetRpcServerAddressCallbackCtxt->pRpcServer)
{
pGetRpcServerAddressCallbackCtxt->bFound = TRUE;
*pbContinue=FALSE;
@@ -242,6 +244,7 @@ BOOL WINAPI GetRpcServerAddressInProcess(DWORD Pid,RpcCoreInternalCtxt_T* pRpcCo
{
if (!ReadProcessMemory(hProcess,pCandidate,&pRpcServer,sizeof(VOID PTR_T),NULL)) goto NextCandidate;
if (!ReadProcessMemory(hProcess,pRpcServer,&RpcServer,sizeof(RpcServer),NULL)) goto NextCandidate;
GetRpcServerAddressCallbackCtxt.pRpcServer = pRpcServer;
if (!EnumSimpleDict(hProcess,&RpcServer.InterfaceDict,&GetRpcServerAddressCallback,&GetRpcServerAddressCallbackCtxt)) goto End;
if (GetRpcServerAddressCallbackCtxt.bFound==TRUE)
{
+4 -1
View File
@@ -13,7 +13,10 @@ static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
0x600011DB149E0LL, //6.1.7601.18912
0x600011DB149F5LL, //6.1.7601.18933
0x600011DB149FBLL, //6.1.7601.18939
0x600011DB15B7BLL //6.1.7601.23419
0x600011DB14ABFLL, //6.1.7601.19135
0x600011DB15B7BLL, //6.1.7601.23419
0x600011DB15CA2LL, //6.1.7601.23714
0x600011DB15D6BLL, //6.1.7601.23915
};
#ifdef _WIN64
+4 -1
View File
@@ -12,7 +12,10 @@ static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
0x600011DB149E0LL, //6.1.7601.18912
0x600011DB149F5LL, //6.1.7601.18933
0x600011DB149FBLL, //6.1.7601.18939
0x600011DB15B7BLL //6.1.7601.23419
0x600011DB14ABFLL, //6.1.7601.19135
0x600011DB15B7BLL, //6.1.7601.23419
0x600011DB15CA2LL, //6.1.7601.23714
0x600011DB15D6BLL, //6.1.7601.23915
};
#define RPC_CORE_DESCRIPTION "Windows 7 SP1 64bits runtime core"
+2 -1
View File
@@ -4,13 +4,13 @@
#include <windows.h>
#include <Rpc.h>
static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
0x6000324D70000LL, //6.3.9431.0000
0x6000325804000LL, //6.3.9600.16384
0x6000325804340LL, //6.3.9600.17216
0x6000325804407LL, //6.3.9600.17415
0x60003258045FFLL, //6.3.9600.17919
0x6000325804774LL, //6.3.9600.18292
0xA000028004000LL, //10.0.10240.16384
0xA00002800401CLL, //10.0.10240.16412
@@ -25,6 +25,7 @@ static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
0xA00003AD702A2LL, //10.0.15063.674
0xA00003F6803E8LL, //10.0.16232.1000
0xA00003FAB000FLL, //10.0.16299.15
0xA0000427903E8LL, //10.0.17017.1000
};
#ifdef _WIN64
+3
View File
@@ -10,6 +10,7 @@ static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
0x6000325804340LL, //6.3.9600.17216
0x6000325804407LL, //6.3.9600.17415
0x60003258045FFLL, //6.3.9600.17919
0x6000325804774LL, //6.3.9600.18292
0xA000028004000LL, //10.0.10240.16384
0xA00002800401CLL, //10.0.10240.16412
@@ -18,11 +19,13 @@ static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
0xA0000380603E8LL, //10.0.14342.1000
0xA000038190000LL, //10.0.14361.0
0xA000038390000LL, //10.0.14393.0
0xA000038390052LL, //10.0.14393.82
0xA00003AD70000LL, //10.0.15063.0
0xA00003AD701BFLL, //10.0.15063.447
0xA00003AD702A2LL, //10.0.15063.674
0xA00003F6803E8LL, //10.0.16232.1000
0xA00003FAB000FLL, //10.0.16299.15
0xA0000427903E8LL, //10.0.17017.1000
};
#define RPC_CORE_DESCRIPTION "Windows 10 64bits runtime core"
+2 -2
View File
@@ -22,8 +22,8 @@
//
1 VERSIONINFO
FILEVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,0
PRODUCTVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,0
FILEVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,_RPCVIEW_VERSION_BUILD_
PRODUCTVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,_RPCVIEW_VERSION_BUILD_
FILEFLAGSMASK 0x0L
#ifdef _DEBUG
FILEFLAGS 0x1L
+34 -30
View File
@@ -30,7 +30,7 @@ IdlInterface* IdlFunction::getpIdlInterface() const
size_t IdlFunction::getNbArguments() const
{
return (size_t)m_ProcHeader.oifheader.bNumber_of_params;
return (size_t)m_ProcHeader.oifheader.number_of_param;
}
bool IdlFunction::hasRangeOnConformance() const
@@ -235,6 +235,7 @@ DECOMP_STATUS IdlFunction::decodeProcHeader(void* pCtx)
if(bResult == FALSE)
{
RPC_ERROR_FN("can not read explicit bind handle");
return DS_ERR_UNABLE_TO_READ_MEMORY;
}
@@ -244,7 +245,6 @@ DECOMP_STATUS IdlFunction::decodeProcHeader(void* pCtx)
default:
RPC_ERROR_FN("invalid explicit handle type\n");
return DS_ERR_INVALID_DATA;
break;
}
}
@@ -259,6 +259,7 @@ DECOMP_STATUS IdlFunction::decodeProcHeader(void* pCtx)
sizeof(this->m_ProcHeader.oifheader));
if (bResult == FALSE){
RPC_ERROR_FN("can not read oif header\n");
return DS_ERR_UNABLE_TO_READ_MEMORY; ;
}
@@ -267,42 +268,45 @@ DECOMP_STATUS IdlFunction::decodeProcHeader(void* pCtx)
//========================================================
// Read Win32Ext header part of header
//========================================================
// TODO : check under which condition win32Kext header is present
bResult = RPC_GET_PROCESS_DATA2(
(pRpcDecompilerCtxt->pRpcDecompilerInfo->pProcFormatString + uOffsetInProcFmtString),
&(this->m_ProcHeader.win2KextHeader.extension_version),
sizeof(this->m_ProcHeader.win2KextHeader.extension_version));
if (bResult == FALSE){
return DS_ERR_UNABLE_TO_READ_MEMORY; ;
}
switch (this->m_ProcHeader.win2KextHeader.extension_version)
if (this->m_ProcHeader.oifheader.interpreter_opt_flag.HasExtensions)
{
case WIN2K_EXT_HEADER_32B_SIZE:
bResult = RPC_GET_PROCESS_DATA2(
(pRpcDecompilerCtxt->pRpcDecompilerInfo->pProcFormatString + uOffsetInProcFmtString),
&(this->m_ProcHeader.win2KextHeader.extension_version),
WIN2K_EXT_HEADER_32B_SIZE
);
sizeof(this->m_ProcHeader.win2KextHeader.extension_version));
uOffsetInProcFmtString += WIN2K_EXT_HEADER_32B_SIZE;
if (bResult == FALSE){
RPC_ERROR_FN("can not read win32ext header\n");
return DS_ERR_UNABLE_TO_READ_MEMORY;
}
break;
case WIN2K_EXT_HEADER_64B_SIZE:
bResult = RPC_GET_PROCESS_DATA2(
(pRpcDecompilerCtxt->pRpcDecompilerInfo->pProcFormatString + uOffsetInProcFmtString),
&(this->m_ProcHeader.win2KextHeader.extension_version),
WIN2K_EXT_HEADER_64B_SIZE
);
uOffsetInProcFmtString += WIN2K_EXT_HEADER_64B_SIZE;
break;
switch (this->m_ProcHeader.win2KextHeader.extension_version)
{
case WIN2K_EXT_HEADER_32B_SIZE:
bResult = RPC_GET_PROCESS_DATA2(
(pRpcDecompilerCtxt->pRpcDecompilerInfo->pProcFormatString + uOffsetInProcFmtString),
&(this->m_ProcHeader.win2KextHeader.extension_version),
WIN2K_EXT_HEADER_32B_SIZE
);
default:
return DS_ERR_INVALID_DATA;
uOffsetInProcFmtString += WIN2K_EXT_HEADER_32B_SIZE;
break;
case WIN2K_EXT_HEADER_64B_SIZE:
bResult = RPC_GET_PROCESS_DATA2(
(pRpcDecompilerCtxt->pRpcDecompilerInfo->pProcFormatString + uOffsetInProcFmtString),
&(this->m_ProcHeader.win2KextHeader.extension_version),
WIN2K_EXT_HEADER_64B_SIZE
);
uOffsetInProcFmtString += WIN2K_EXT_HEADER_64B_SIZE;
break;
default:
RPC_ERROR_FN("invalid win32k header len");
return DS_ERR_INVALID_DATA;
}
}
m_uOffsetFirstArg = uOffsetInProcFmtString;
+2 -2
View File
@@ -22,8 +22,8 @@
//
1 VERSIONINFO
FILEVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,0
PRODUCTVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,0
FILEVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_, _RPCVIEW_VERSION_BUILD_
PRODUCTVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_, _RPCVIEW_VERSION_BUILD_
FILEFLAGSMASK 0x0L
#ifdef _DEBUG
FILEFLAGS 0x1L
+1 -10
View File
@@ -242,7 +242,7 @@ typedef struct Oif_Header_t
as the SERVER_MUST_SIZE flag triggers the sizing. */
INTERPRETER_OPT_FLAGS interpreter_opt_flag; // Voir interpreter_opt_flag values
unsigned char number_of_param; // Nombre de paramètres décrits de la procédure, return compris
}Oif_Header_t;
}Oif_Header_t, OIF_HEADER_T;
//------------------------------------------------------------------------------
// _MIDL_PROC_FORMAT_STRING types :
@@ -324,15 +324,6 @@ typedef struct _OI_HEADER_T
OI_HEADER_END_T end;
}OI_HEADER_T;
// Oif fields
typedef struct _OIF_HEADER_T
{
WORD wConstant_client_buffer_size;
WORD wConstant_server_buffer_size;
BYTE bINTERPRETER_OPT_FLAGS;
BYTE bNumber_of_params;
}OIF_HEADER_T;
//
// Procedure header
typedef struct _PROC_HEADER_T
+1 -1
View File
@@ -248,7 +248,7 @@ BOOL __fastcall RpcDecompilerDecodeAndPrintPrototypeReturnType(
);
currentOffset += sizeof(Oi_Header_RpcFlags_t);
RPC_DEBUG_FN((UCHAR*)"\noiHeaderRpcFlagsToDecode->rpc_flags = 0x%x", oiHeaderRpcFlagsToDecode->rpc_flags);
//RPC_DEBUG_FN((UCHAR*)"\noiHeaderRpcFlagsToDecode->rpc_flags = 0x%x", oiHeaderRpcFlagsToDecode->rpc_flags);
}
+7 -11
View File
@@ -10,8 +10,8 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
# Find the QtWidgets library
# set CMAKE_PREFIX_PATH=c:\Qt\4.8.6
find_package(Qt4 REQUIRED QtGui QtCore)
# set CMAKE_PREFIX_PATH=C:\Qt\Qt5.9.1\5.9.1\msvc2015 or c:\Qt\Qt5.9.1\5.9.1\msvc2015_64
find_package(Qt5Widgets)
add_executable(
RpcView
@@ -43,12 +43,8 @@ add_executable(
RpcViewResource.rc
)
if(${CMAKE_GENERATOR} MATCHES "Win64")
message(STATUS "Target is 64 bits")
target_link_libraries(RpcView ../../../Qt/lib/x64/QtGui ../../../Qt/lib/x64/QtCore)
target_link_libraries(RpcView Qt4::QtGui Qt4::QtCore)
else(${CMAKE_GENERATOR} MATCHES "Win64")
message(STATUS "Target is 32 bits")
target_link_libraries(RpcView ../../../Qt/lib/x86/QtGui ../../../Qt/lib/x86/QtCore)
target_link_libraries(RpcView Qt4::QtGui Qt4::QtCore)
endif(${CMAKE_GENERATOR} MATCHES "Win64")
# Disable compiler warnings:
# C4091 in ShlObj.h and Dbghelp.h
# C4127 (conditional expression is constant) in qt headers
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/wd4091 /wd4127")
target_link_libraries(RpcView Qt5::Widgets $ENV{CMAKE_PREFIX_PATH}/lib/Qt5WinExtras.lib)
+1
View File
@@ -89,6 +89,7 @@ void ConfigurationVisitor_C::Visit(InterfaceInfoWidget_C* pInterfaceInfoWidget)
void ConfigurationVisitor_C::Visit(ProcessInfoWidget_C* pProcessInfoWidget)
{
//nothing to do here
UNREFERENCED_PARAMETER(pProcessInfoWidget);
}
//------------------------------------------------------------------------------
+3 -2
View File
@@ -10,10 +10,10 @@ void DecompilationWidget_C::InsertText(const char* Txt)
{
/*
pTextEdit->moveCursor(QTextCursor::End);
pTextEdit->append( QString::fromAscii(Txt) );
pTextEdit->append( QString::fromLatin1(Txt) );
pTextEdit->ensureCursorVisible();
*/
pTextEdit->setText( QString::fromAscii(Txt) );
pTextEdit->setText( QString::fromLatin1(Txt) );
pTextEdit->ensureCursorVisible();
}
@@ -22,6 +22,7 @@ DecompilationWidget_C::DecompilationWidget_C(QWidget *parent) : QDockWidget(Widg
{
QFont font;
UNREFERENCED_PARAMETER(parent);
setObjectName(WidgetName);
font.setFamily("Courier");
+1
View File
@@ -26,6 +26,7 @@ EndpointSelectedVisitor_C::EndpointSelectedVisitor_C(quint32 Pid,RpcCore_T* pRpc
void EndpointSelectedVisitor_C::Visit(EndpointsWidget_C* pEndpointsWidget)
{
//nothing to do here
UNREFERENCED_PARAMETER(pEndpointsWidget);
}
+2
View File
@@ -85,6 +85,8 @@ bool EndpointsWidget_C::IsEndpointsPresent(quint32 Pid, WCHAR* pName,WCHAR* pPro
QList<QStandardItem*> ItemList;
bool bResult = false;
UNREFERENCED_PARAMETER(Pid);
ItemList = pModel->findItems(QString::fromUtf16((const ushort*)pName), Qt::MatchFixedString, Column_Name);
if (ItemList.isEmpty()) goto End;
+4
View File
@@ -18,6 +18,7 @@ typedef struct _EnumCtxt_T{
//------------------------------------------------------------------------------
static BOOL WINAPI EnumProc(DWORD Pid, DWORD Ppid, EnumCtxt_T* pEnumCtxt, BOOL* pbContinue)
{
UNREFERENCED_PARAMETER(pbContinue);
ProcessEntry_C* pProcessEntry = new ProcessEntry_C(Ppid,Pid);
pEnumCtxt->pInitViewsVisitor->ProcessVector.push_back(pProcessEntry);
@@ -126,6 +127,7 @@ void InitViewsVisitor_C::Visit(InterfacesWidget_C* pInterfacesWidget)
void InitViewsVisitor_C::Visit(InterfaceInfoWidget_C* pInterfaceInfoWidget)
{
//nothing to do here
UNREFERENCED_PARAMETER(pInterfaceInfoWidget);
}
@@ -133,6 +135,7 @@ void InitViewsVisitor_C::Visit(InterfaceInfoWidget_C* pInterfaceInfoWidget)
void InitViewsVisitor_C::Visit(ProcessInfoWidget_C* pProcessInfoWidget)
{
//nothing to do here
UNREFERENCED_PARAMETER(pProcessInfoWidget);
}
@@ -140,6 +143,7 @@ void InitViewsVisitor_C::Visit(ProcessInfoWidget_C* pProcessInfoWidget)
void InitViewsVisitor_C::Visit(ProceduresWidget_C* pProceduresWidget)
{
//nothing to do here
UNREFERENCED_PARAMETER(pProceduresWidget);
}
+5 -3
View File
@@ -158,15 +158,15 @@ End:
}
//------------------------------------------------------------------------------
void InterfaceInfoWidget_C::SetAddressRepresentation(AddressRepresentation_T AddressRepresentation)
void InterfaceInfoWidget_C::SetAddressRepresentation(AddressRepresentation_T AddrRepresentation)
{
this->AddressRepresentation = AddressRepresentation;
this->AddressRepresentation = AddrRepresentation;
pCallbackAddress->setText("");
pTypeFormatString->setText("");
pProcFormatString->setText("");
pExpressionEvaluation->setText("");
switch (AddressRepresentation)
switch (AddrRepresentation)
{
case AddressRepresentation_RVA:
if ((IfCallback != 0) && (IfCallback!=INVALID_IF_CALLBACK_ADDRESS)) pCallbackAddress->setText(QString("+0x%1").arg(IfCallback - Base, 8, 16, QLatin1Char('0')));
@@ -198,6 +198,8 @@ void InterfaceInfoWidget_C::AcceptVisitor(ViewVisitor_C* pVisitor)
//------------------------------------------------------------------------------
InterfaceInfoWidget_C::InterfaceInfoWidget_C(QWidget* pParent):QDockWidget(WidgetName)
{
UNREFERENCED_PARAMETER(pParent);
this->Pid = 0;
setObjectName(WidgetName);
+1 -2
View File
@@ -43,6 +43,7 @@ void InterfaceSelectedVisitor_C::Visit(EndpointsWidget_C* pEndpointsWidget)
void InterfaceSelectedVisitor_C::Visit(InterfacesWidget_C* pInterfacesWidget)
{
//nothing todo
UNREFERENCED_PARAMETER(pInterfacesWidget);
}
//------------------------------------------------------------------------------
@@ -119,9 +120,7 @@ void InterfaceSelectedVisitor_C::Visit(ProceduresWidget_C* pProceduresWidget)
WCHAR SymbolName[RPC_MAX_LENGTH];
ULONG ProcIdx;
VOID* ProcFormat = NULL;
LPCWSTR pProcName = NULL;
VOID* hPdb = NULL;
UCHAR* ProcAddress = NULL;
if (pRpcInterfaceInfo==NULL) goto End;
pProceduresWidget->reset(pRpcInterfaceInfo->Pid);
+8 -9
View File
@@ -51,10 +51,10 @@ void InterfacesWidget_C::InterfaceSelected(const QModelIndex& Index)
RPC_IF_ID RpcIfId;
UCHAR* pUuidStringA;
QString& PidString = pProxyModel->data( pProxyModel->index(Index.row(), Column_Pid) ).toString();
pUuidStringA = (UCHAR*)pProxyModel->data( pProxyModel->index(Index.row(), Column_Uuid) ).toString().toLatin1().data();
QString& VersionString = pProxyModel->data( pProxyModel->index(Index.row(), Column_Version) ).toString();
VersionStringList = VersionString.split(".", QString::SkipEmptyParts, Qt::CaseSensitive);
QString PidString = pProxyModel->data( pProxyModel->index(Index.row(), Column_Pid) ).toString();
pUuidStringA = (UCHAR*)pProxyModel->data( pProxyModel->index(Index.row(), Column_Uuid) ).toString().toLatin1().data();
QString VersionString = pProxyModel->data( pProxyModel->index(Index.row(), Column_Version) ).toString();
VersionStringList = VersionString.split(".", QString::SkipEmptyParts, Qt::CaseSensitive);
if (VersionStringList.isEmpty())
{
@@ -129,7 +129,7 @@ bool InterfacesWidget_C::IsInterfacePresent(quint32 Pid, RPC_IF_ID* pIfId)
if ( UuidToStringA(&pIfId->Uuid,&pUuidString)!=RPC_S_OK ) goto End;
ItemList = pModel->findItems(QString::fromAscii((const char*)pUuidString), Qt::MatchFixedString, Column_Uuid);
ItemList = pModel->findItems(QString::fromLatin1((const char*)pUuidString), Qt::MatchFixedString, Column_Uuid);
if (ItemList.isEmpty()) goto End;
for (auto Iter=ItemList.begin();Iter!=ItemList.end();Iter++)
@@ -248,7 +248,6 @@ bool InterfacesWidget_C::AddInterfaces(RpcInterfaceInfo_T* pRpcInterfaceInfo)
int Index;
QString PidString;
WCHAR* pUuidString = NULL;
WCHAR* pTransfertSyntaxString = NULL;
WCHAR* pTypeW = NULL;
WCHAR* pStubW = NULL;
@@ -324,7 +323,7 @@ bool InterfacesWidget_C::AddInterfaces(RpcInterfaceInfo_T* pRpcInterfaceInfo)
if (pRpcInterfaceInfo->LocationState & MEM_FREE) SetRowColor(Index, QColor(200, 200, 200, 180));
if (!memcmp(&pRpcInterfaceInfo->TransfertSyntax,&DceRpcSyntaxUuid,sizeof(DceRpcSyntaxUuid)))
pModel->setData(pModel->index(Index, Column_TransfertSyntax), QString::fromAscii("DCE"));
pModel->setData(pModel->index(Index, Column_TransfertSyntax), QString::fromLatin1("DCE"));
else if (!memcmp(&pRpcInterfaceInfo->TransfertSyntax,&Ndr64SyntaxUuid,sizeof(Ndr64SyntaxUuid)))
pModel->setData(pModel->index(Index, Column_TransfertSyntax), QString::fromUtf16((const ushort*)L"NDR64"));
else
@@ -396,9 +395,9 @@ void InterfacesWidget_C::UpdateColumnsVisibility()
//------------------------------------------------------------------------------
void InterfacesWidget_C::SetAddressRepresentation(AddressRepresentation_T AddressRepresentation)
void InterfacesWidget_C::SetAddressRepresentation(AddressRepresentation_T AddrRepresentation)
{
switch (AddressRepresentation)
switch (AddrRepresentation)
{
case AddressRepresentation_RVA:
for (int i = 0; i < pModel->rowCount(); i++)
+23 -22
View File
@@ -132,7 +132,7 @@ bool MainWindow_C::eventFilter(QObject* pObject, QEvent* pEvent)
{
if (pEvent->type() == QEvent::ContextMenu)
{
QPoint& position = QCursor::pos();
QPoint position = QCursor::pos();
//
// Show the context menu associatd to columns
//
@@ -207,8 +207,9 @@ VOID __cdecl RpcPrint(void* pContext, const char* pTxt)
VOID __cdecl RpcDebug(const char* pFunction, ULONG Line, const char* pFormatString, ...)
{
va_list Arg;
va_start(Arg, pFormatString);
UNREFERENCED_PARAMETER(pFunction);
UNREFERENCED_PARAMETER(Line);
va_start(Arg, pFormatString);
_vcprintf(pFormatString, Arg);
}
@@ -384,7 +385,8 @@ void MainWindow_C::SendVisitor(ViewVisitor_C& Visitor)
//------------------------------------------------------------------------------
void MainWindow_C::closeEvent(QCloseEvent *event)
{
Exit();
UNREFERENCED_PARAMETER(event);
Exit();
}
@@ -447,7 +449,7 @@ void MainWindow_C::ConfigureSymbols()
if ( bOk )
{
pSettings->setValue("SymbolsPath",NewSymbolsPath);
SetEnvironmentVariableA("RpcViewSymbolPath",NewSymbolsPath.toAscii());
SetEnvironmentVariableA("RpcViewSymbolPath",NewSymbolsPath.toLatin1());
}
}
@@ -554,15 +556,15 @@ void MainWindow_C::SetupMenu()
//
QMenu* pMenuFile = pMenuBar->addMenu("&File");
QAction* pActionAllProcessesDetails = pMenuFile->addAction("Show &Details for All Processes",this,SLOT(ViewDetailsForAllProcesses()));
QAction* pActionFileExit = pMenuFile->addAction("E&xit",this,SLOT(Exit()));
pMenuFile->addAction("E&xit",this,SLOT(Exit()));
//
// Option
//
QMenu* pMenuOptions = pMenuBar->addMenu("&Options");
QAction* pActionConfigureSymbols = pMenuOptions->addAction("Configure Sym&bols",this,SLOT(ConfigureSymbols()));
pMenuOptions->addAction("Configure Sym&bols",this,SLOT(ConfigureSymbols()));
QMenu* pSubMenupdateSpeed = pMenuOptions->addMenu("&Refresh Speed");
QAction* pActionRefresh = pMenuOptions->addAction("Refresh &Now", this, SLOT(RefreshViews()));
QAction* pActionViewSelectColumns = pMenuOptions->addAction("Select Col&umns", this, SLOT(ShowColumnsDialog()));
pMenuOptions->addAction("Select Col&umns", this, SLOT(ShowColumnsDialog()));
QMenu* pSubMenuAddress = pMenuOptions->addMenu("&Address");
pActionRefresh->setShortcut(Qt::Key_F5);
@@ -616,9 +618,9 @@ void MainWindow_C::SetupMenu()
// Filter
//
QMenu* pMenuFilter = pMenuBar->addMenu("Fil&ter");
QAction* pActionFilterProcesses = pMenuFilter->addAction("&Process", this, SLOT(FilterProcesses()));
QAction* pActionFilterEndpoints = pMenuFilter->addAction("&Endpoints", this, SLOT(FilterEndpoints()));
QAction* pActionFilterInterfaces = pMenuFilter->addAction("&Interfaces", this, SLOT(FilterInterfaces()));
pMenuFilter->addAction("&Process", this, SLOT(FilterProcesses()));
pMenuFilter->addAction("&Endpoints", this, SLOT(FilterEndpoints()));
pMenuFilter->addAction("&Interfaces", this, SLOT(FilterInterfaces()));
//
// Help
//
@@ -628,15 +630,15 @@ void MainWindow_C::SetupMenu()
//--
pMenuHelp->addSeparator();
//--
QAction* pActionAbout = pMenuHelp->addAction("&About", this, SLOT(About()));
pActionAboutQt = pMenuHelp->addAction("About &Qt", qApp, SLOT(aboutQt()));
pMenuHelp->addAction("&About", this, SLOT(About()));
pMenuHelp->addAction("About &Qt", qApp, SLOT(aboutQt()));
if (IsUserAnAdmin()) pActionAllProcessesDetails->setEnabled(false);
hUacIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_UAC_ICON));
if (hUacIcon!=NULL)
{
pActionAllProcessesDetails->setIcon(QPixmap::fromWinHICON(hUacIcon));
pActionAllProcessesDetails->setIcon(QtWin::fromHICON(hUacIcon));
DestroyIcon(hUacIcon);
}
setMenuBar(pMenuBar);
@@ -729,12 +731,11 @@ MainWindow_C::MainWindow_C(RpcCore_T* pRpcCore)
setStatusBar(&StatusBar);
HANDLE hIcon = LoadImageA(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_MAIN_ICON), IMAGE_ICON, 0, 0, 0);
QFont font("Helvetica", 20, QFont::Bold);
#ifndef _DEBUG
QSplashScreen SplashScreen(QPixmap::fromWinHICON((HICON)hIcon),Qt::WindowStaysOnTopHint);
HANDLE hIcon = LoadImageA(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_MAIN_ICON), IMAGE_ICON, 0, 0, 0);
QSplashScreen SplashScreen(QtWin::fromHICON((HICON)hIcon),Qt::WindowStaysOnTopHint);
SplashScreen.showMessage(QString("RpcView"), Qt::AlignCenter, QColor(Qt::lightGray));
QFont font("Helvetica", 20, QFont::Bold);
SplashScreen.setFont(font);
SplashScreen.show();
#endif
@@ -780,12 +781,12 @@ MainWindow_C::MainWindow_C(RpcCore_T* pRpcCore)
restoreGeometry( pSettings->value("MainWindow/geometry").toByteArray() );
restoreState( pSettings->value("MainWindow/windowState").toByteArray() );
ConfigurationVisitor_C ConfigurationVisitor(ConfigurationVisitor_C::Load,pSettings);
SendVisitor(ConfigurationVisitor);
ConfigurationVisitor_C ConfigurationVisitorLoad(ConfigurationVisitor_C::Load,pSettings);
SendVisitor(ConfigurationVisitorLoad);
if (AddressRepresentation == AddressRepresentation_RVA)
{
ConfigurationVisitor_C ConfigurationVisitor(ConfigurationVisitor_C::AddressRVA, pSettings);
SendVisitor(ConfigurationVisitor);
ConfigurationVisitor_C ConfigurationVisitorAddr(ConfigurationVisitor_C::AddressRVA, pSettings);
SendVisitor(ConfigurationVisitorAddr);
}
SetEnvironmentVariableA( "RpcViewSymbolPath",pSettings->value("SymbolsPath").toByteArray() );
-1
View File
@@ -81,7 +81,6 @@ private:
QAction* pActionViewProcedures;
QAction* pActionViewInterfaceInfo;
QAction* pActionViewProcessInfo;
QAction* pActionAboutQt;
QAction* pActionSpeedFast;
QAction* pActionSpeedNormal;
QAction* pActionSpeedBelowNormal;
+5 -5
View File
@@ -20,9 +20,9 @@ QString GetProceduresWidgetColumName(ProceduresWigetColumn_T ProceduresWigetColu
//------------------------------------------------------------------------------
void ProceduresWidget_C::reset(ULONG Pid)
void ProceduresWidget_C::reset(ULONG pid)
{
this->Pid = Pid;
this->Pid = pid;
pProcedures->clear();
}
@@ -82,14 +82,14 @@ bool ProceduresWidget_C::AddProcedure(quint32 ProcIdx, WCHAR* pSymbolName, VOID*
//------------------------------------------------------------------------------
void ProceduresWidget_C::SetAddressRepresentation(AddressRepresentation_T AddressRepresentation)
void ProceduresWidget_C::SetAddressRepresentation(AddressRepresentation_T AddrRepresentation)
{
QTreeWidgetItem* pProcedure;
quintptr AbsoluteAddr;
this->AddressRepresentation = AddressRepresentation;
this->AddressRepresentation = AddrRepresentation;
switch (AddressRepresentation)
switch (AddrRepresentation)
{
case AddressRepresentation_RVA:
for (int i = 0; i < pProcedures->topLevelItemCount(); i++)
+4 -1
View File
@@ -122,7 +122,7 @@ void ProcessInfoWidget_C::UpdateProcessInfo(RpcProcessInfo_T* pRpcProcessInfo)
if (pRpcProcessInfo->hIcon!=NULL)
{
pIconLabel->setPixmap( QPixmap::fromWinHICON( pRpcProcessInfo->hIcon ) );
pIconLabel->setPixmap( QtWin::fromHICON( pRpcProcessInfo->hIcon ) );
pIconLabel->show();
DestroyIcon( pRpcProcessInfo->hIcon );
}
@@ -178,6 +178,9 @@ void ProcessInfoWidget_C::AcceptVisitor(ViewVisitor_C* pVisitor)
//------------------------------------------------------------------------------
ProcessInfoWidget_C::ProcessInfoWidget_C(QWidget* pParent):QDockWidget(WidgetName)
{
UNREFERENCED_PARAMETER(pParent);
setObjectName(WidgetName);
pTabWidget = new QTabWidget(this);
+8 -3
View File
@@ -146,6 +146,8 @@ void ProcessWidget_C::ProcessSelected(QTreeWidgetItem* pItem, int Column)
{
quint32 Pid;
UNREFERENCED_PARAMETER(Column);
Pid = pItem->data(Column_Pid,0).toInt();
emit ProcessSelected(Pid);
}
@@ -249,7 +251,7 @@ bool ProcessWidget_C::AddProcess(RpcProcessInfo_T* pRpcProcessInfo)
if ( pRpcProcessInfo->hIcon!=NULL )
{
AddProcessItem(pProcess,Index,Column_Name, Qt::DecorationRole, QIcon( QPixmap::fromWinHICON( pRpcProcessInfo->hIcon ) ) );
AddProcessItem(pProcess,Index,Column_Name, Qt::DecorationRole, QIcon( QtWin::fromHICON( pRpcProcessInfo->hIcon ) ) );
DestroyIcon( pRpcProcessInfo->hIcon );
}
@@ -346,6 +348,8 @@ void ProcessWidget_C::LoadConfiguration(QSettings* pSettings)
//------------------------------------------------------------------------------
void ProcessWidget_C::InitProcessTreeWidget(QWidget* pParent)
{
UNREFERENCED_PARAMETER(pParent);
pProcessTree = new QTreeWidget(this);
QTreeWidgetItem* pHeaderItem = pProcessTree->headerItem();
@@ -374,6 +378,7 @@ void ProcessWidget_C::InitProcessTreeWidget(QWidget* pParent)
//------------------------------------------------------------------------------
void ProcessWidget_C::InitProcessTreeView(QWidget* pParent)
{
UNREFERENCED_PARAMETER(pParent);
pProxyModel = new QSortFilterProxyModel(this);
pProxyModel->setDynamicSortFilter(true);
pProxyModel->setFilterKeyColumn(Column_Pid);
@@ -493,6 +498,8 @@ void ProcessWidget_C::UpdateColumnsVisibility()
// Switch to the view header
void ProcessWidget_C::TreeHeaderClicked(int logicalIndex)
{
UNREFERENCED_PARAMETER(logicalIndex);
if (pStackedWidget->currentWidget()!=pProcessView)
{
pStackedWidget->setCurrentWidget(pProcessView);
@@ -527,8 +534,6 @@ void ProcessWidget_C::ViewHeaderClicked(int logicalIndex)
//------------------------------------------------------------------------------
ProcessWidget_C::ProcessWidget_C(QWidget* pParent):QGroupBox(WidgetName)
{
QGridLayout* pGridLayout;
setObjectName(WidgetName);
pStackedWidget = new QStackedWidget(this);
+3
View File
@@ -23,6 +23,7 @@ typedef struct _EnumCtxt_T{
//------------------------------------------------------------------------------
static BOOL WINAPI EnumProc(DWORD Pid, DWORD Ppid, EnumCtxt_T* pEnumCtxt, BOOL* pbContinue)
{
UNREFERENCED_PARAMETER(pbContinue);
ProcessEntry_C* pProcessEntry = new ProcessEntry_C(Ppid,Pid);
pEnumCtxt->pRefreshVisitor->ProcessVector.push_back(pProcessEntry);
@@ -189,6 +190,7 @@ void RefreshVisitor_C::Visit(InterfacesWidget_C* pInterfacesWidget)
void RefreshVisitor_C::Visit(InterfaceInfoWidget_C* pInterfaceInfoWidget)
{
//nothing to do here
UNREFERENCED_PARAMETER(pInterfaceInfoWidget);
}
@@ -210,6 +212,7 @@ void RefreshVisitor_C::Visit(ProcessInfoWidget_C* pProcessInfoWidget)
void RefreshVisitor_C::Visit(ProceduresWidget_C* pProceduresWidget)
{
//nothing to do
UNREFERENCED_PARAMETER(pProceduresWidget);
}
+6 -12
View File
@@ -57,7 +57,7 @@ BOOL NTAPI LoadCoreEngine(RpcCore_T** ppRpcCoreHelper, void** ppRpcCoreCtxt, BOO
hLib = LoadLibraryA(Win32FindData.cFileName);
if (hLib != NULL)
{
pRpcCoreHelper = (RpcCore_T*)GetProcAddress(hLib, RPC_CORE_EXPORT_SYMBOL);
pRpcCoreHelper = (RpcCore_T*)(ULONG_PTR)GetProcAddress(hLib, RPC_CORE_EXPORT_SYMBOL);
if (pRpcCoreHelper != NULL)
{
*ppRpcCoreCtxt = pRpcCoreHelper->RpcCoreInitFn();
@@ -66,13 +66,10 @@ BOOL NTAPI LoadCoreEngine(RpcCore_T** ppRpcCoreHelper, void** ppRpcCoreCtxt, BOO
pRpcCoreHelper->RpcCoreUninitFn(*ppRpcCoreCtxt);
if (bWow64Helper == pRpcCoreHelper->bWow64Helper)
{
// Version.As64BitsValue = pRpcCoreHelper->RuntimeVersion;
_cprintf("RpcCore : %s\n", Win32FindData.cFileName);
// _cprintf("Version : %I64X (%u.%u.%u.%u)\n", Version.As64BitsValue, Version.As16BitsValues.Part4, Version.As16BitsValues.Part3, Version.As16BitsValues.Part2, Version.As16BitsValues.Part1);
_cprintf("Helper : 0x%p\n", pRpcCoreHelper);
_cprintf("Wow64 : ");
if (pRpcCoreHelper->bWow64Helper) _cprintf("TRUE\n"); else _cprintf("FALSE\n");
// _cprintf("Description: %s\n\n", pRpcCoreHelper->pDescription);
*ppRpcCoreHelper = pRpcCoreHelper;
bResult = TRUE;
goto End;
@@ -112,17 +109,14 @@ VOID* __fastcall RpcCoreInit()
}
pRpcCoreManager->pNativeCoreCtxt = pRpcCoreManager->pNativeCore->RpcCoreInitFn();
#ifdef _WIN64
if (!LoadCoreEngine(&pRpcCoreManager->pWow64Core, &pRpcCoreManager->pWow64CoreCtxt, TRUE)) goto Cleanup;
if (!LoadCoreEngine(&pRpcCoreManager->pWow64Core, &pRpcCoreManager->pWow64CoreCtxt, TRUE))
{
OS_FREE(pRpcCoreManager);
return NULL;
}
pRpcCoreManager->pWow64CoreCtxt = pRpcCoreManager->pWow64Core->RpcCoreInitFn();
#endif
End:
return (pRpcCoreManager);
#ifdef _WIN64
Cleanup:
#endif
OS_FREE(pRpcCoreManager);
pRpcCoreManager = NULL;
goto End;
}
//-----------------------------------------------------------------------------
+7 -2
View File
@@ -230,6 +230,7 @@ typedef struct _EnumCtxt_T{
//------------------------------------------------------------------------------
VOID __cdecl RpcDbgPrint(void* pContext, const char* pTxt)
{
UNREFERENCED_PARAMETER(pContext);
printf("%s\n", pTxt);
}
@@ -292,7 +293,7 @@ End:
//------------------------------------------------------------------------------
int DecompileAllInterfaces(RpcCore_T* pRpcCore)
{
EnumCtxt_T EnumCtxt;
EnumCtxt_T EnumCtxt = {0};
RpcDecompilerHelper_T* pRpcDecompilerHelper;
HMODULE hDecompiler = NULL;
@@ -336,6 +337,10 @@ End:
char* pCmdLineA = NULL;
char** argv = &pCmdLineA;
UNREFERENCED_PARAMETER(pCmdLine);
UNREFERENCED_PARAMETER(hInstance);
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(nCmdShow);
pCmdLineA = GetCommandLineA();
#endif
QApplication app(argc, argv);
@@ -373,7 +378,7 @@ End:
hMainIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_MAIN_ICON));
if (hMainIcon!=NULL)
{
pMainWindow->setWindowIcon(QPixmap::fromWinHICON(hMainIcon));
pMainWindow->setWindowIcon(QtWin::fromHICON(hMainIcon));
DestroyIcon(hMainIcon);
}
return app.exec();
+2 -2
View File
@@ -23,8 +23,8 @@
//
1 VERSIONINFO
FILEVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,0
PRODUCTVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_,0
FILEVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_, _RPCVIEW_VERSION_BUILD_
PRODUCTVERSION _RPCVIEW_VERSION_MAJOR_,_RPCVIEW_VERSION_MINOR_,_RPCVIEW_VERSION_RELEASE_, _RPCVIEW_VERSION_BUILD_
FILEFLAGSMASK 0x0L
#ifdef _DEBUG
FILEFLAGS 0x1L
+2 -1
View File
@@ -4,6 +4,7 @@
#define _RPCVIEW_VERSION_MAJOR_ @RPCVIEW_VERSION_MAJOR@
#define _RPCVIEW_VERSION_MINOR_ @RPCVIEW_VERSION_MINOR@
#define _RPCVIEW_VERSION_RELEASE_ @RPCVIEW_VERSION_RELEASE@
#define _RPCVIEW_PRODUCT_VERSION_ "@RPCVIEW_VERSION_MAJOR@.@RPCVIEW_VERSION_MINOR@.@RPCVIEW_VERSION_RELEASE@.0"
#define _RPCVIEW_VERSION_BUILD_ @RPCVIEW_VERSION_BUILD@
#define _RPCVIEW_PRODUCT_VERSION_ "@RPCVIEW_VERSION_MAJOR@.@RPCVIEW_VERSION_MINOR@.@RPCVIEW_VERSION_RELEASE@.@RPCVIEW_VERSION_BUILD@"
#endif