⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 watch.cpp

📁 数据加密算法
💻 CPP
字号:
#include "pch.h"
#include "main.h"
#include "doc.h"
#include "debug.h"
#include "record.h"
#include "watch.h"
#include "message.h"

BEGIN_MESSAGE_MAP ( CWatchDialog , CDialog )
	ON_BN_CLICKED ( IDC_FORWARD , OnForwardClick )
	ON_BN_CLICKED ( IDC_BACKWARD , OnBackwardClick ) 
END_MESSAGE_MAP ( )

CWatchDialog::CWatchDialog ( CDancerDoc* pDancerDoc , BOOL bNotify )
: CDialog ( IDD_WATCH )
{
	m_pDancerDoc = pDancerDoc ;
	m_bNotify = bNotify ;
}

CWatchDialog::~CWatchDialog ( )
{
}

BOOL CWatchDialog::OnInitDialog ( )
{
	CDialog::OnInitDialog ( );

	if ( m_bNotify == FALSE )
	{
		m_xPause.ShowWindow ( SW_HIDE ) ;
	}
	else
	{
		CString str ; 
		str.LoadString ( IDS_NOTIFY ) ;

		SetWindowText ( str ) ;
	}

	CMainApp* p = ( CMainApp* ) AfxGetApp ( ) ;
	m_xTree.SetImageList ( &p->m_imgType , TVSIL_NORMAL ) ;

	CListCtrl& ctrl = m_pDancerDoc->m_pMessageView->GetListCtrl ( ) ;
	int item = ctrl.GetNextItem ( -1 , LVNI_SELECTED ) ;

	LocateAt ( item ) ;

	UpdateData ( FALSE ) ;

	return TRUE ;
}

void CWatchDialog::DoDataExchange ( CDataExchange* pDX )
{
	CDialog::DoDataExchange ( pDX ) ;

	DDX_Control ( pDX , IDC_BASIC_INFO , m_xBasicInfo ) ;
	DDX_Control ( pDX , IDC_PAUSE , m_xPause ) ;
	DDX_Control ( pDX , IDC_PARAMETER , m_xTree ) ;
	DDX_Control ( pDX , IDC_REG , m_xReg ) ;
	DDX_Control ( pDX , IDC_REG2 , m_xRegPost ) ;
}

void CWatchDialog::OnForwardClick ( )
{
	CListCtrl& ctrl = m_pDancerDoc->m_pMessageView->GetListCtrl ( ) ;
	DWORD n = ctrl.GetItemCount ( ) , item = ( DWORD ) m_nItem ;

	while ( item < n - 1 )
	{
		Record* p = ( Record* ) ctrl.GetItemData ( ++item ) ;
		if ( p->m_nType == HOOK_MSG )
		{
			LocateAt ( item ) ;
			break ;
		}
	}
}

void CWatchDialog::OnBackwardClick ( )
{
	CListCtrl& ctrl = m_pDancerDoc->m_pMessageView->GetListCtrl ( ) ;
	DWORD n = ctrl.GetItemCount ( ) , item = ( DWORD ) m_nItem ;

	while ( item > 0 )
	{
		Record* p = ( Record* ) ctrl.GetItemData ( --item ) ;
		if ( p->m_nType == HOOK_MSG )
		{
			LocateAt ( item ) ;
			break ;
		}
	}
}

void CWatchDialog::LocateAt ( int item )
{
	UpdateData ( ) ;

	// set basic information

	CListCtrl& ctrl = m_pDancerDoc->m_pMessageView->GetListCtrl ( ) ;
	ctrl.SetItemState ( item , LVIS_SELECTED , LVIS_SELECTED ) ;

	Record* p = ( Record* ) ctrl.GetItemData ( item ) ;

	CString msg , str;
	p->Present2 ( str ) ;
	msg.Format ( "%d - " , p->m_pDispatch->m_dwListItem ) ;
	msg += str ;
	
	m_xBasicInfo.SetWindowText ( msg ) ;

	// set parameter tree

	m_xTree.DeleteAllItems ( ) ;

	if ( p->m_pDispatch->m_pParamBlock != NULL )
	{
		p->m_pDispatch->m_pParamBlock->Present ( m_xTree , TVI_ROOT ) ;

		if ( p->m_pDispatch->m_pParamBlockPost != NULL )
		{
			HTREEITEM h = m_xTree.InsertItem ( "Return Value" , 4 , 4 , TVI_ROOT ) ;
			p->m_pDispatch->m_pParamBlockPost->Present ( m_xTree , h ) ;
		}
	}
	else
	{
		m_xTree.InsertItem ( "N/A" , 3 , 3 ) ;
	}

	// set register information

	m_xReg.ResetContent ( ) ;
	
	if ( p->m_pDispatch->m_pReg != NULL )
	{
		str.Format ( "EAX: %08X" , p->m_pDispatch->m_pReg->Eax ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "EBX: %08X" , p->m_pDispatch->m_pReg->Ebx ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "ECX: %08X" , p->m_pDispatch->m_pReg->Ecx ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "EDX: %08X" , p->m_pDispatch->m_pReg->Edx ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "EBP: %08X" , p->m_pDispatch->m_pReg->Ebp ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "ESP: %08X" , p->m_pDispatch->m_pReg->Esp ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "ESI: %08X" , p->m_pDispatch->m_pReg->Esi ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "EDI: %08X" , p->m_pDispatch->m_pReg->Edi ) ;
		m_xReg.AddString ( str ) ;
		str.Format ( "FLAG: %08X" , p->m_pDispatch->m_pReg->Flags ) ;
		m_xReg.AddString ( str ) ;
	}
	else
	{
		m_xReg.AddString ( "N/A" ) ;
	}

	m_xRegPost.ResetContent ( ) ;
	
	if ( p->m_pDispatch->m_pRegPost != NULL )
	{
		str.Format ( "EAX: %08X" , p->m_pDispatch->m_pRegPost->Eax ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "EBX: %08X" , p->m_pDispatch->m_pRegPost->Ebx ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "ECX: %08X" , p->m_pDispatch->m_pRegPost->Ecx ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "EDX: %08X" , p->m_pDispatch->m_pRegPost->Edx ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "EBP: %08X" , p->m_pDispatch->m_pRegPost->Ebp ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "ESP: %08X" , p->m_pDispatch->m_pRegPost->Esp ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "ESI: %08X" , p->m_pDispatch->m_pRegPost->Esi ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "EDI: %08X" , p->m_pDispatch->m_pRegPost->Edi ) ;
		m_xRegPost.AddString ( str ) ;
		str.Format ( "FLAG: %08X" , p->m_pDispatch->m_pRegPost->Flags ) ;
		m_xRegPost.AddString ( str ) ;
	}
	else
	{
		m_xRegPost.AddString ( "N/A" ) ;
	}

	UpdateData ( FALSE ) ;

	m_nItem = item ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -