文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 如何计算PE头部校验和

如何计算PE头部校验和

时间:2004/10/15 0:58:00来源:本站整理作者:蓝点我要评论(0)

 ;你应该已经见过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.冷雨  

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      ?  
  .nMaxFile          dd      ?  
  .lpstrFileTitle    dd      ?  
  .nMaxFileTitle      dd      ?  
  .lpstrInitialDir    dd      ?  
  .lpstrTitle        dd      ?  
  .Flags              dd      ?  
  .nFileOffset        dw      ?  
  .nFileExtension    dw      ?  
  .lpstrDefExt        dd      ?  
  .lCustData          dd      ?  
  .lpfnHook          dd      ?  
  .lpTemplateName    dd      ?  
  .size=$-.lStructSize  
}  
virtual        at 0  
ofn    OPENFILENAME        
end    virtual  
;-----------------------------------------  

.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  

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  
        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  

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

        mov    esi,eax  

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

        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  

    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  
        invoke    CloseHandle,eax  

        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
    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程