//主界面代码
BOOL CCrackMeDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
HMODULE hThis = GetModuleHandle(NULL);
HRSRC hRes = FindResource(hThis, MAKEINTRESOURCE(IDR_DLL1), _T("DLL")); //第二个参加是资源ID,第三个参数是,添加写的名字
HGLOBAL hGres = LoadResource(hThis, hRes);
PVOID pRes = LockResource(hGres);
DWORD dwSize = SizeofResource(NULL, hRes);
TCHAR szCur[MAX_PATH];
GetCurrentDirectory(MAX_PATH, szCur);
_tcscat(szCur, _T("\\CrackMeDll.dll"));
HANDLE hFile = CreateFile(_T("CrackMeDll.dll"), GENERIC_WRITE, NULL, NULL, CREATE_NEW,
FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_ARCHIVE, NULL);
DWORD dwSizeWritten = 0;
WriteFile(hFile, pRes, dwSize, &dwSizeWritten, NULL);
CloseHandle(hFile);
//typedef与函数TestFuction类型相同的函数指针为TESTDLL
//加载动态链接库**.dll
hmod = ::LoadLibrary(_TEXT("CrackMeDll.dll"));
if (NULL == hmod)
{
TRACE("加载**.dll失败");
}
//定义一个与函数TestFuction类型相同的函数指针lpproc
TESTDLL lpproc;
//搜索**.dll中函数名为expDeCode的对外接口
lpproc = (TESTDLL)GetProcAddress(hmod, "?expDeCode@CCrackMeDllApp@@QAE?AV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@V23@@Z");
//DWORD i = GetLastError();
//如果搜索成功
if (NULL != lpproc)
{
CiText = "";
//通过函数指针lpproc调用**.dll的接口函数expDeCode
enText = (*lpproc)(CiText);
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
//加密代码
CString CCrackMeDllApp::DeCode(CString CiText)
{
CString stringIV = L"abcdefghijklmnopqrstuvwxyz";
byte key = 15;
CString stringDestIV;
int i;
CString ch;
for (int ntext = 0; ntext < 26; ++ntext) {
i = (key + ntext) % 26;//15+0 % 26 15 16 17 18 19 20 21 22 23 24 25 26 1 2 3 4 5 6 7 8 9 10 11 12 13 14
ch = stringIV.GetAt(i); // p q r s t u v w x y z a a b c d e f g h i j k l m n o
stringDestIV += ch; //
}
//System.out.println("解密表为: " + stringIV);
//StringBuffer var9 = new StringBuffer();
CString var9;
for (i = 0; i < CiText.GetLength(); ++i) {
ch = CiText.GetAt(i);
ch.MakeLower();
int index = 0;
for (int ch2 = 0; ch2 < stringDestIV.GetLength(); ++ch2) {
if (ch == stringDestIV.GetAt(ch2)) {
index = ch2;
break;
}
}
char var10 = stringIV.GetAt(index);
var9 += var10;
}
return var9;
}
链接:http://pan.baidu.com/s/1eRYd7rG 密码:scsf