网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 网络攻防 > 黑客技术 > 系列教程 > 《加密解密技术内幕》5.5 PE 头部校验和(checksum)的计算  

《加密解密技术内幕》5.5 PE 头部校验和(checksum)的计算

2008-03-28  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

如何计算PE头部校验和 


;你应该已经见过LoadPE的校正PE头checksum的功能,想给你自己的工具加一个这种功能? 
;yes,it’s easy!let’s GO!GO!GO! 

;PE checksum计算算法: 
;PE文件修改的时候一般可不用计算checksum,但是由于OS对系统文件校验其checksum 
;因此修改PE的时候有时会需要更新其checksum值,一般可以用imagehelp.dll中的函数 
;进行计算,不过实际上这玩意很简单,我们完全可以自己来做.假设PE文件大小x,若为奇数 
;字节则用0补足文件使x为偶数,然后取文件中所有的字进行带进位加法操作(adc),最后和 
;文件大小进行带进位加法操作(adc)得到结果即为checksum结果.当然在计算前应置pe.CheckSum域为0. 
;具体见下面的cal_checksum例程. 
;enjoy it. 
;                                              YJ.Hume.冷雨 
网管网www_bitscn_com

include ’%fasinc%/win32a.inc’ 
include ’%fasinc%/pestruc.h’ 
struc OPENFILENAME 

  .lStructSize        dd      ? 
  .hwndOwner          dd      ? 
  .hInstance          dd      ? 
  .lpstrFilter        dd      ? 
  .lpstrCustomFilter  dd      ? 
  .nMaxCustFilter    dd      ? 
  .nFilterIndex      dd      ? 
  .lpstrFile          dd      ?  网管联盟bitsCN_com
  .nMaxFile          dd      ? 
  .lpstrFileTitle    dd      ? 
  .nMaxFileTitle      dd      ? 
  .lpstrInitialDir    dd      ? 
  .lpstrTitle        dd      ? 
  .Flags              dd      ? 
  .nFileOffset        dw      ? 
  .nFileExtension    dw      ? 
  .lpstrDefExt        dd      ? 
  .lCustData          dd      ?  网管联盟bitsCN_com
  .lpfnHook          dd      ? 
  .lpTemplateName    dd      ? 
  .size=$-.lStructSize 

virtual        at 0 
ofn    OPENFILENAME        
end    virtual 
;----------------------------------------- 

网管u家u.bitscn@com

.data 
opf OPENFILENAME 
lpStrFilter    db "PE Files",0,"*.exe;*.dll",0 
                db "WDM Files",0,"*.sys",0,0 
zTit            db "Hume’s PE checkSum 计算器,2K2",0 
initial_dir    db ".",0 
网管下载dl.bitscn.com

ms000          db "File OPERATION ERR!",0 
fmt            db "The PE-CheckSum of Current file IS:%X",0 
buf:            rb 256 
.code 
StArT: 
        mov    [opf.lStructSize],ofn.size 
        mov    [opf.lpstrFile],buf 
        mov    [opf.nMaxFile],256        
        mov    [opf.lpstrFilter],lpStrFilter 
        mov    [opf.lpstrTitle],zTit 
        mov    [opf.lpstrInitialDir],initial_dir 

中国网管论坛bbs.bitsCN.com

        mov    [opf.Flags],81000h 
        invoke    GetOpenFileName,opf 
        or      eax,eax 
        je      exit 
        
        mov    eax,ofn.lpstrFile 
        invoke    CreateFile,[opf.lpstrFile],0x80000000,0,0,3,0,0 
        inc    eax 
        je      err 
        dec    eax 
        push    eax 
网管u家u.bitsCN.com

        invoke    GetFileSize,eax,0 
        push    eax 
        push    eax 
      
        invoke    VirtualAlloc,0,eax,1000h,4 
        or      eax,eax 
        je      err 
        pop    ecx 
        push    eax 

网管网www.bitscn.com

        mov    esi,eax  网管联盟bitsCN_com

        mov    edx,[esp+8] 
        invoke    ReadFile,edx,eax,ecx,esp,0 

网管下载dl.bitscn.com

        mov    edi,[esi+3ch] 
        add    edi,esi 
        mov    dword [edi+peh.CheckSum],0 
        
        mov    ecx,[esp+4] 
        inc    ecx 
        shr    ecx,1 
        xor    ebp,ebp 
        clc 
网管u家u.bitsCN.com

    cal_checksum: 
        adc    bp,word [esi] 
        inc    esi 
        inc    esi 
        loop    cal_checksum 
        mov    ebx,[esp+4] 
        add    ebp,ebx 
        
        pop    eax 
        invoke    VirtualFree,eax,ebx,4000h 
        
        pop    eax 
        pop    eax  网管论坛bbs_bitsCN_com
        invoke    CloseHandle,eax 
网管u家u.bitscn@com

        invoke    wsprintf,buf,fmt,ebp 
        invoke    MessageBox,0,buf,zTit,40h      
        
        
  exit: 
        invoke    ExitProcess,0 
        
    err: 
        invoke    MessageBox,0,ms000,zTit,20h 
        jmp    byte exit 
        
.end StArT 

网管论坛bbs_bitsCN_com



TAGs   计算   头部       dd    mov    eax      invoke       
 上一篇:《加密解密技术内幕》5.4 反DUMP技术   下一篇:《加密解密技术内幕》5.6 矛与盾的较量(1)——CRC原理篇
《加密解密技术内幕》5.5 PE 头部校验和(checksum)的计算 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: