当前位置:七道奇文章资讯安全技术网络技术
日期:2010-08-14 03:57:00  来源:本站整理

利用程序几种常用的保护办法[网络技术]

赞助商链接



  本文“利用程序几种常用的保护办法[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1、前言
目前很多程序员都没有软件安全的意识,对自己辛辛劳苦的劳动成果不加保护,而这些贫乏保护意识的程序在日益强盛的SoftIce, OllyDBG(OllyICE), W32DASM等工具眼前显得如此脆弱,一个略微有点经验的Cracker大概在几分钟之内便可以简单的冲破防线;有些程序员固然有了保护自己程序的意识,但是普通都完好依靠于专业的保护软件举行加壳保护,对自己的程序本身在编码阶段却完好不设防,而这些出名的壳也并非安全,目前对这些出名的壳都有专门的脱壳工具和脱壳教材,一旦这些壳被剥掉,那么显目前Cracker眼前的也美满是一些赤裸裸的代码.
本文主要介绍在软件编码阶段举行一些必要的保护手段,在编译生成二进制代码后再举行外部加壳保护处理,这样应当更安全一些,一旦壳被攻破,还有内部的保护机制在起作用,已经写成类库,认为有效的可以下载略微改正便可以利用.

2、常用的几种编码阶段的保护手段

A、检测SoftIce驱动能否安装

检测SoffIce的驱动能否存在来判断能否安装了SoftIce,代码以下:

if(CreateFile( "\\\\.\\NTICE", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
NULL)!=INVALID_HANDLE_VALUE)
{
There is SoftICE NT on your system;
}
if(CreateFile( "\\\\.\\SICE", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
NULL)!=INVALID_HANDLE_VALUE)
{
There is SoftICE98 on your system;
}


B. 程序窗口句柄检测

检测能否存在窗口Ollyice大概OllyDbg等等,读者可以自行增添

char name1[]="OLLYDBG";

char name2[]="OLLYICE";

HWND hwnd=BlurFindWindow(name1); //循环检测windows全部顶层窗口,只要窗口名称中含有(模糊匹配)字符串name1,name2的窗口则阐明存在Ollyice大概OllyDbg

if(hwnd!=NULL)
{
There is OLLYDBG on your system;
}
hwnd=BlurFindWindow(name2);

if(hwnd!=NULL)
{
There is OLLYICE on your system;
}

C. 用线程环境块检测

TEB(Thread Environment Block) 在 Windows 9x 系列中被称为 TIB(Thread Information Block),它记录了线程的重要信息,并且每一个线程城市对应一个 TEB 构造.在TEB构造的 30h 偏移处存放着别的一个重要的数据构造的首地址PPEB:
typedef struct _NT_TEB
{
NT_TIB Tib; // 00h
PVOID EnvironmentPointer; // 1Ch
CLIENT_ID Cid; // 20h
PVOID ActiveRpcInfo; // 28h
PVOID ThreadLocalStoragePointer; // 2Ch
PPEB Peb; // 30h
ULONG LastErrorValue; // 34h
ULONG CountOfOwnedCriticalSections; // 38h
PVOID CsrClientThread; // 3Ch
PVOID Win32ThreadInfo; // 40h
ULONG Win32ClientInfo[0x1F]; // 44h
PVOID WOW32Reserved; // C0h
ULONG CurrentLocale; // C4h
ULONG FpSoftwareStatusRegister; // C8h
PVOID SystemReserved1[0x36]; // CCh
PVOID Spare1; // 1A4h
LONG ExceptionCode; // 1A8h
ULONG SpareBytes1[0x28]; // 1ACh
PVOID SystemReserved2[0xA]; // 1D4h
GDI_TEB_BATCH GdiTebBatch; // 1FCh
ULONG gdiRgn; // 6DCh
ULONG gdiPen; // 6E0h
ULONG gdiBrush; // 6E4h
CLIENT_ID RealClientId; // 6E8h
PVOID GdiCachedProcessHandle; // 6F0h
ULONG GdiClientPID; // 6F4h
ULONG GdiClientTID; // 6F8h
PVOID GdiThreadLocaleInfo; // 6FCh
PVOID UserReserved[5]; // 700h
PVOID glDispatchTable[0x118]; // 714h
ULONG glReserved1[0x1A]; // B74h
PVOID glReserved2; // BDCh
PVOID glSectionInfo; // BE0h
PVOID glSection; // BE4h
PVOID glTable; // BE8h
PVOID glCurrentRC; // BECh
PVOID glContext; // BF0h
NTSTATUS LastStatusValue; // BF4h
UNICODE_STRING StaticUnicodeString; // BF8h
WCHAR StaticUnicodeBuffer[0x105]; // C00h
PVOID DeallocationStack; // E0Ch
PVOID TlsSlots[0x40]; // E10h
LIST_ENTRY TlsLinks; // F10h
PVOID Vdm; // F18h
PVOID ReservedForNtRpc; // F1Ch
PVOID DbgSsReserved[0x2]; // F20h
ULONG HardErrorDisabled; // F28h
PVOID Instrumentation[0x10]; // F2Ch
PVOID WinSockData; // F6Ch
ULONG GdiBatchCount; // F70h
ULONG Spare2; // F74h
ULONG Spare3; // F78h
ULONG Spare4; // F7Ch
PVOID ReservedForOle; // F80h
ULONG WaitingOnLoaderLock; // F84h

PVOID StackCommit; // F88h
PVOID StackCommitMax; // F8Ch
PVOID StackReserve; // F90h

PVOID MessageQueue; // ???
} NT_TEB, *PNT_TEB;

[1] [2] [3] [4]  下一页


  以上是“利用程序几种常用的保护办法[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Win8若何安装利用程序 win8安装利用程序的办法
  • 教你若何成立windows利用程序的后台系统服务
  • IIS配置PHP呈现1%不是有效WIN32利用程序
  • Ubuntu中十个必装的利用程序
  • Ubuntu为基于X利用程序增添启动项
  • Windows 7利用程序锁避免孩子乱动电脑
  • 办理Windows 7利用程序兼容性问题
  • 教你在Windows 7中与IE6利用程序相处
  • 教你在Win 7系统下定制利用程序运行号令
  • 不用C++代码写MFC基于对话框利用程序
  • 办来由于利用程序配置不精确无法启动QQ的办法
  • Windows7掌握利用程序的安装和运行
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .