欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

去除花指令的代码

去除花指令的代码

奥运开幕前夕,发个帖子留作纪念。
#define WIN32_LEAN_AND_MEAN  
#include "windows.h"
BYTE flowCode1[] = {......}; // ......表示你的花指令组合,这个需要你自己替换了。
BYTE flowCode2[] = { ........};
BYTE flowCode3[] = { .........};
char szFileName[] = "combojiang.exe";
//找出花指令的位置并去掉花指令
void FindFlowerCodeAndRemove(LPVOID src, LPVOID flw, int nSrcLen,int nflwLen)
{
  __asm
  {
    xor eax,eax
    push esi 
    push edi 
    push ecx
    cld 
    mov esi,flw
    mov edi,src
    mov ecx,nSrcLen
    lodsb
    
Start:
    repnz scasb
    or ecx,ecx
    jz NotFindFlower
    push eax
    push ecx
    push esi 
    push edi 
    lea edi,[edi - 1]
    mov ecx,nflwLen
    mov esi,flw
        repz cmpsb
    or ecx,ecx
    jnz MYLOOP
      
    mov ecx,nflwLen
    sub edi,nflwLen
    mov al,0x90
    rep stosb
MYLOOP:
               pop edi 
    pop esi 
    pop ecx 
    pop eax
    jmp Start
NotFindFlower:
    pop ecx
    pop edi 
    pop esi
  }
}

int main(int argc, char* argv[])
{
    DWORD dwHigh;
  HANDLE hFile = CreateFile(szFileName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);  
  HANDLE hMap = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,0,0);
  LPVOID lpMem = MapViewOfFile(hMap,FILE_MAP_ALL_ACCESS,0,0,0);
  int nFileLen  = GetFileSize(hFile,&dwHigh);

   FindFlowerCodeAndRemove(lpMem, flowCode1, nFileLen,23);  
   FindFlowerCodeAndRemove(lpMem, flowCode2, nFileLen,12);
  FindFlowerCodeAndRemove(lpMem, flowCode3, nFileLen,8);
  
  UnmapViewOfFile(lpMem);
  CloseHandle(hMap);
  CloseHandle(hFile);
  return 0;
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功