一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

CodeZap:給 EXE 添加額外代碼的 C++ SDK

 quasiceo 2014-01-13

三四年沒在這里發(fā)過貼了,湊個(gè)熱鬧,貼一小東西:CodeZap。

給 EXE 添加節(jié)顯示啟動(dòng)信息的代碼多的要死,CodeZap 這個(gè)最大的特色就是 C++ 寫成的,且提供了比較獨(dú)立美觀的Z函數(shù)。只要了解 C/C++ 語(yǔ)言,就能寫添加大量的代碼,完全可以工程化操作。

引用:

CodeZap 簡(jiǎn)要說明

CodeZap 是用來給 PE 文件添加額外代碼的 C++ SDK。您可以通過使用熟悉而且容易工程化的 C/C++ 語(yǔ)言來添加大量的可執(zhí)行代碼。

Codez 使用非常簡(jiǎn)單,你只要模仿 ZCode 函數(shù),寫出自己的 ZCode 即可。其中 ZCode 的要求如下:

1. ZCode 必須是 CDECL 調(diào)用規(guī)范。
2. ZCode 函數(shù)最后的 __asm 塊,除 #ifdef _DEBUG 包圍的之外,必須保留。
3. ZCode 中不能使用字符串常量。
4. ZCode 中不能調(diào)用外部函數(shù)。
5. ZCode 中可以調(diào)用 __forceinline 聲明的函數(shù)。
6. ZCode 中可以使用 CodeZap 中所有 Z 開頭的函數(shù)。
7. ZCode 中的 C++ 代碼可以任意添加,只要符合前面的所有條件。
8. 可以修改  #ifdef _DEBUG 中的匯編代碼為你所所要情形。
9. 可以修改函數(shù)的參數(shù)(基于上一條為前提)。

CodeZap 調(diào)用示例:
CodeZap(TEXT("C:\\ABC.CZ.exe"), TEXT("C:\\ABC.exe"), (PBYTE) ZCode);

Powered By Yonsm
WWW.Yonsm.NET
2007.4.31
支持 Visual C++ 6.0/2005 編譯

代碼:

接口函數(shù):
BOOL CodeZap(PCTSTR ptzDst, PCTSTR ptzSrc, PBYTE pbCode);
ZAPI HMODULE ZGetKernelHandle();
ZAPI HMODULE ZGetModuleHandle(PCTSTR ptzModule = NULL);
ZAPI HMODULE ZSearchModuleHandle(PCTSTR ptzModule, PBYTE pbBase = (PBYTE) 0x70000000, PBYTE pbMax = (PBYTE) 0x80000000);
ZAPI FARPROC ZGetProcAddress(HMODULE hModule, PCTSTR ptzProc);

代碼:

你如果要添加功能,則需要改寫的函數(shù): ZCode
VOID CDECL ZCode()
{
  // KERNEL32
  HMODULE hKernel32 = ZGetKernelHandle();

  // GetProcAddress
  TCHAR szGetProcAddress[] = {'G', 'e', 't', 'P',  'r', 'o', 'c', 'A',  'd', 'd', 'r', 'e',  's', 's', 0};
  PGetProcAddress  pGetProcAddress  = (PGetProcAddress)  ZGetProcAddress(hKernel32, szGetProcAddress);
  if (!pGetProcAddress) return;

  // LoadLibrary
  CHAR szLoadLibrary[] = {'L', 'o', 'a', 'd',  'L', 'i', 'b', 'r',  'a', 'r', 'y', ZEND};
  PLoadLibrary pLoadLibrary =  (PLoadLibrary) pGetProcAddress(hKernel32, szLoadLibrary);
  if (!pLoadLibrary) return;

  // USER32
  TCHAR tzUser32[] = {'U', 'S', 'E', 'R',  '3', '2', 0};
  HMODULE  hUser32  = pLoadLibrary(tzUser32);

  // MessageBox
  CHAR szMessageBox[]  = {'M',  'e', 's', 's', 'a',  'g', 'e', 'B', 'o',  'x', ZEND};
  PMessageBox  pMessageBox  = (PMessageBox)  pGetProcAddress(hUser32, szMessageBox);

  TCHAR tzText[] = {'H', 'a',  'h', 'a', ',', ' ',  'I', ' ', 'a', 'm',  ' ', 'C', 'o', 'd',  'e', 'Z', 'a', 'p',  '!', 0};
  TCHAR tzCaption[] =  {'C', 'o', 'd',  'e', 'Z', 'a', 'p',  0};
  pMessageBox(NULL, tzText, tzCaption, MB_ICONINFORMATION);

  __asm
  {
    JMP    _ZCodeEnd;

_ZJumpOEP:
    // Jump to OEP: Jump delta will be fixed by CodeZap
    JMP    $ + 5;

#ifndef _DEBUG
    // Put your own ASM code here
    PUSHAD;
    CALL  ZCode;
    POPAD;
#endif

    JMP    _ZJumpOEP;
_ZCodeEnd:
  }
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产一区二区不卡在线视频| 日韩一级免费中文字幕视频 | 97人妻人人揉人人躁人人| 欧美黄色黑人一区二区| 亚洲一区二区三区国产| 国产成人亚洲精品青草天美| 国产又粗又黄又爽又硬的| 欧美日韩精品一区二区三区不卡| 免费人妻精品一区二区三区久久久| 免费大片黄在线观看国语| 亚洲国产av一二三区| 亚洲最新av在线观看| 国产精品午夜福利免费阅读| 亚洲精品有码中文字幕在线观看| 国产一区二区三中文字幕 | 妻子的新妈妈中文字幕| 精品国产亚洲av久一区二区三区| 日韩欧美中文字幕人妻| 日韩精品一级一区二区| 国产精品超碰在线观看| 毛片在线观看免费日韩| 亚洲精品中文字幕熟女| 儿媳妇的诱惑中文字幕| 国产精品刮毛视频不卡| 国产精品视频第一第二区| 亚洲欧美精品伊人久久| 国语久精品在视频在线观看| 亚洲高清中文字幕一区二三区 | 免费观看潮喷到高潮大叫| 男女午夜在线免费观看视频| 久久精品蜜桃一区二区av| 真实国产乱子伦对白视频不卡| 91久久精品国产成人| 欧美日韩国产的另类视频| 国产精品午夜一区二区三区| 国产一区日韩二区欧美| 久草国产精品一区二区| 日木乱偷人妻中文字幕在线| 亚洲精品中文字幕熟女| 国产级别精品一区二区视频| 偷拍偷窥女厕一区二区视频|