主要界面如下:

主要代碼如下:
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
TRUE;
CPaintDC dc();
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()),
cxIcon = cyIcon = GetClientRect(& x = (rect.Width() - cxIcon + ) / y = (rect.Height() - cyIcon + ) /
static_cast<HCURSOR>
((CEdit*)GetDlgItem(IDC_EDIT_FILEPATH))-> m_strPathName = AfxMessageBox(_T(
(FALSE == AfxMessageBox(_T(
CFileDialog FileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T( CString strPathName = ((CEdit*)GetDlgItem(IDC_EDIT_FILEPATH))->
BOOL CPEParseDlg::FileCreate( BOOL bRet =
m_hFile = CreateFile(m_strPathName.GetBuffer(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | (INVALID_HANDLE_VALUE ==
m_hMap = CreateFileMapping(m_hFile, NULL, PAGE_READWRITE, , (NULL ==
m_lpBase = MapViewOfFile(m_hMap, FILE_MAP_READ | FILE_MAP_WRITE, , , (NULL ==
bRet =
CPEParseDlg::InitSectionList( m_ctrlSections.GetClientRect(& m_ctrlSections.SetExtendedStyle(m_ctrlSections.GetExtendedStyle() | LVS_EX_FULLROWSELECT | m_ctrlSections.InsertColumn(, _T( m_ctrlSections.InsertColumn(, _T( m_ctrlSections.InsertColumn(, _T( m_ctrlSections.InsertColumn(, _T( m_ctrlSections.InsertColumn(, _T( m_ctrlSections.InsertColumn(, _T( m_ctrlSections.SetColumnWidth(, Rect.Width() / m_ctrlSections.SetColumnWidth(, Rect.Width() / m_ctrlSections.SetColumnWidth(, Rect.Width() / m_ctrlSections.SetColumnWidth(, Rect.Width() / m_ctrlSections.SetColumnWidth(, Rect.Width() / m_ctrlSections.SetColumnWidth(, Rect.Width() /
BOOL CPEParseDlg::IsPeFileAndGetPePointer( BOOL bRet =
m_pDosHeader = (IMAGE_DOS_SIGNATURE != m_pDosHeader->
m_pNtHeaders = (PIMAGE_NT_HEADERS)((DWORD)m_lpBase + m_pDosHeader-> (IMAGE_NT_SIGNATURE != m_pNtHeaders->
m_pSectionHeader = (PIMAGE_SECTION_HEADER)((DWORD)&(m_pNtHeaders->OptionalHeader) + m_pNtHeaders->
bRet =
CPEParseDlg::ParseBasePe( m_strEntryPoint.Format(_T(), m_pNtHeaders-> m_strImageBase.Format(_T(), m_pNtHeaders-> m_strLinkerVersion.Format(_T(), m_pNtHeaders->OptionalHeader.MajorLinkerVersion, m_pNtHeaders-> m_strSectionNum.Format(_T(), m_pNtHeaders-> m_strFileAlignment.Format(_T(), m_pNtHeaders-> m_strSectionAlignment.Format(_T(), m_pNtHeaders->
CPEParseDlg::EnumSections(
iSectionNumber = m_pNtHeaders->
( i = ; i < iSectionNumber; ++ strTemp =
strTemp.Format(_T( m_ctrlSections.SetItemText(i,
strTemp.Format(_T( m_ctrlSections.SetItemText(i,
strTemp.Format(_T( m_ctrlSections.SetItemText(i,
strTemp.Format(_T( m_ctrlSections.SetItemText(i,
strTemp.Format(_T( m_ctrlSections.SetItemText(i,
m_nSelected = ((CEdit*)GetDlgItem(IDC_EDIT_VA))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_RVA))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_FILEOFFSET))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_VA))-> ((CEdit*)GetDlgItem(IDC_EDIT_RVA))-> ((CEdit*)GetDlgItem(IDC_EDIT_FILEOFFSET))->
m_nSelected = ((CEdit*)GetDlgItem(IDC_EDIT_VA))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_RVA))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_FILEOFFSET))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_VA))-> ((CEdit*)GetDlgItem(IDC_EDIT_RVA))-> ((CEdit*)GetDlgItem(IDC_EDIT_FILEOFFSET))->
m_nSelected = ((CEdit*)GetDlgItem(IDC_EDIT_VA))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_RVA))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_FILEOFFSET))->SetWindowText(_T( ((CEdit*)GetDlgItem(IDC_EDIT_VA))-> ((CEdit*)GetDlgItem(IDC_EDIT_RVA))-> ((CEdit*)GetDlgItem(IDC_EDIT_FILEOFFSET))->
m_strImageBase = AfxMessageBox(_T(
((CEdit*)GetDlgItem(IDC_EDIT_FILEPATH))-> (strPathName != AfxMessageBox(_T(
DWORD dwAddr = dwAddr = nInNum =
DWORD CPEParseDlg::GetAddr( TCHAR szAddr[] = { DWORD dwAddr = GetDlgItemText(IDC_EDIT_VA, szAddr, HexStrToInt(szAddr, & GetDlgItemText(IDC_EDIT_RVA, szAddr, HexStrToInt(szAddr, & GetDlgItemText(IDC_EDIT_FILEOFFSET, szAddr, HexStrToInt(szAddr, &
nInNum = nSectionNum = m_pNtHeaders-> DWORD dwImageBase = m_pNtHeaders-> (nInNum = ; nInNum < nSectionNum; nInNum++ (dwAddr >= dwImageBase + && dwAddr <= dwImageBase + + (nInNum = ; nInNum < nSectionNum; nInNum++ (dwAddr >= && dwAddr <= + (nInNum = ; nInNum < nSectionNum; nInNum++ (dwAddr >= && dwAddr <= +
-
CPEParseDlg::CalcAddr( DWORD dwVa = DWORD dwRva = DWORD dwFileOffset =
dwVa = dwRva = dwVa - m_pNtHeaders-> dwFileOffset = m_pSectionHeader[nInNum].PointerToRawData + (dwRva - dwVa = dwAddr + m_pNtHeaders-> dwRva = dwFileOffset = m_pSectionHeader[nInNum].PointerToRawData + (dwRva - dwFileOffset = dwRva = m_pSectionHeader[nInNum].VirtualAddress + (dwFileOffset - dwVa = dwRva + m_pNtHeaders->
str.Format(_T(
str.Format(_T(
str.Format(_T(
CPEParseDlg::HexStrToInt(TCHAR* szAddr, DWORD* iLen = *pdwAddr =
( i = ; i < iLen; i++ (szAddr[i] >= _T() && szAddr[i] <= _T( *pdwAddr = ((*pdwAddr) << ) | (szAddr[i] - _T( (szAddr[i] >= _T() && szAddr[i] <= _T( *pdwAddr = ((*pdwAddr) << ) | (szAddr[i] - _T() + (szAddr[i] >= _T() && szAddr[i] <= _T( *pdwAddr = ((*pdwAddr) << ) | (szAddr[i] - _T() +
(NULL !=
(NULL !=
(INVALID_HANDLE_VALUE !=
HBRUSH CPEParseDlg::OnCtlColor(CDC* pDC, CWnd* HBRUSH hbr =
m_strImageBase = AfxMessageBox(_T(
((CEdit*)GetDlgItem(IDC_EDIT_FILEPATH))-> (strPathName != AfxMessageBox(_T(
TCHAR szSectionName[] = { nSectionSize =
GetDlgItemText(IDC_EDIT_SECTIONNAME, szSectionName, nSectionSize =
CPEParseDlg::AddSection(TCHAR* szSectionName, nSectionNum = m_pNtHeaders-> DWORD dwFileAlignment = m_pNtHeaders-> DWORD dwSectionAlignment = m_pNtHeaders->
PIMAGE_SECTION_HEADER pTempSection = m_pSectionHeader +
nLen = WideCharToMultiByte(CP_ACP, , (LPCWSTR)szSectionName, -, NULL, *pszSectionNameA = WideCharToMultiByte(CP_ACP, , szSectionName, -, pszSectionNameA, nLen * (
strncpy((*)(pTempSection->Name), pszSectionNameA, pszSectionNameA =
pTempSection->Misc.VirtualSize =
pTempSection->VirtualAddress = m_pSectionHeader[nSectionNum - + AlignSize(m_pSectionHeader[nSectionNum -
pTempSection->SizeOfRawData =
pTempSection->PointerToRawData = m_pSectionHeader[nSectionNum - + AlignSize(m_pSectionHeader[nSectionNum -
m_pNtHeaders->FileHeader.NumberOfSections++
m_pNtHeaders->OptionalHeader.SizeOfImage += pTempSection->
FlushViewOfFile(m_lpBase,
AddSectionData(pTempSection->
str.Format(_T(), m_pNtHeaders-> ((CEdit*)GetDlgItem(IDC_EDIT_SECTIONNUM))->
DWORD CPEParseDlg::AlignSize( nSize = (nSize % dwAlignment != nSectionSize = (nSize / dwAlignment + ) *
CPEParseDlg::AddSectionData( PBYTE pByte = pByte =
DWORD dwNum = SetFilePointer(m_hFile, , WriteFile(m_hFile, pByte, nSectionSize, &
}
下載地址如下:
http://pan.baidu.com/s/1hqBR06S