⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dede_sdk.pas

📁 dede 的源代码 3.10b
💻 PAS
字号:
Unit DeDe_SDK;
////////////////////////////////////////////////////////////////////////////////////////////////////
//
//                      DeDe PlugIn SDK ver 1.0
//
//  by DaFixer
//  Last Update: 20.Nov.2000
////////////////////////////////////////////////////////////////////////////////////////////////////


Interface

uses Classes;

type DWORD = LongWord;

////////////////////////////////////////////////////////////////////////////////////////////////////
// NUMBER OF DeDe PLUGIN INTERFACE PROCEDURES
////////////////////////////////////////////////////////////////////////////////////////////////////
const
   DEDE_SDK_VERSION = '1.1'; 

////////////////////////////////////////////////////////////////////////////////////////////////////
// NUMBER OF DeDe PLUGIN INTERFACE PROCEDURES
////////////////////////////////////////////////////////////////////////////////////////////////////
const
   MaxDeDeFunctions     = 9;

////////////////////////////////////////////////////////////////////////////////////////////////////
// INDEXES OF DeDe PLUGIN INTERFACE PROCEDURES
////////////////////////////////////////////////////////////////////////////////////////////////////
const
   nDisassemble         = 1;
   nGetByte             = 2;
   nGetWord             = 3;
   nGetDWORD            = 4;
   nGetPascalString     = 5;
   nGetBinaryData       = 6;
   nGetCallReference    = 7;
   nGetObjectName       = 8;
   nGetFieldReference   = 9;

////////////////////////////////////////////////////////////////////////////////////////////////////
// Array TO TRANSFER OF DeDe PLUGIN INTERFACE PROCEDURES
////////////////////////////////////////////////////////////////////////////////////////////////////
type TFunctionPointerListArray = Array [1..MaxDeDeFunctions] of Pointer;

////////////////////////////////////////////////////////////////////////////////////////////////////
// PROTOTYPES OF DeDe PLUGIN INTERFACE PROCEDURES
////////////////////////////////////////////////////////////////////////////////////////////////////
Type TGetByteProc           = function  (dwVirtOffset : DWORD) : Byte;
     TGetWordProc           = function  (dwVirtOffset : DWORD) : Word;
     TGetDWORDProc          = function  (dwVirtOffset : DWORD) : DWORD;
     TGetPascalStringProc   = function  (dwVirtOffset : DWORD) : String;
     TGetBinaryDataProc     = procedure (var buffer : Array of Byte; size : Integer; dwVirtOffset : DWORD);
     TDisassembleProc       = function  (dwVirtOffset : DWORD; var sInstr : String; var size : Integer) : Boolean;
     TGetCallReferenceProc  = function  (dwVirtOffset : DWORD; var sReference : String; var btRefType : Byte; btMode : Byte = 0) : Boolean;
     TGetObjectNameProc     = function  (dwVirtOffset : DWORD; var sObjName : String) : Boolean;
     TGetFieldReferenceProc = function  (dwVirtOffset : DWORD; var sReference : String) : Boolean;

////////////////////////////////////////////////////////////////////////////////////////////////////
// PLUGIN TYPES
////////////////////////////////////////////////////////////////////////////////////////////////////
type TPlugFlags = DWORD;

const
   ptListGen            = $00000001;
   ptEmulator           = $00000002;
   ptDisassembler       = $00000004;
   ptLoader             = $00000008;

   ptOwnerShow          = $00000010; // If this flag is set then DeDe will not show
                                     // the StringList in OutData param of StartPlugIn
                                     // The plugin should show the result by itself 

   ptFixRelativeOffsets = $00000100; // Used in Disassemble() 


////////////////////////////////////////////////////////////////////////////////////////////////////
// REFERENCES TYPES
////////////////////////////////////////////////////////////////////////////////////////////////////
Const

   REF_TYPE_DSF       = 0;// - DSF recognized procedure
                          //Normaly references looks like
                          // "System..LStrCatN()"
   REF_TYPE_PUBLISHED = 1;// - Published procedure from some unit
                          //Normaly references looks like
                          //"TfrmFormula.sbCloseClick"
   REF_TYPE_PROTECTED = 2;// - Public/Private/Protected Method recognized by DOI
                          //Normaly references looks like
                          //"TControl.GetClientOrigin"
   REF_TYPE_IDATA     = 3;// - Imported function
                          //"kernel32.GetSystemDirectoryA"

////////////////////////////////////////////////////////////////////////////////////////////////////
// REFERENCES MODES
////////////////////////////////////////////////////////////////////////////////////////////////////
const
   REF_MODE_INCLUDE_UNIT   = $00000001;
   REF_MODE_INCLUDE_PARENS = $00000002;
   REF_MODE_INCLUDE_PARAMS = $00000004;
   REF_MODE_ALL_REFS       = $00000008;


////////////////////////////////////////////////////////////////////////////////////////////////////
// StartPlugIn() input/output parameters types
////////////////////////////////////////////////////////////////////////////////////////////////////
type TListGenIN = record
       dwStartAddress : dword;
end;

type TListGenOut = record
	Listing          : TStringList;
	iGlobalVarsCount : integer;
	GlobalVars       : TStringList;
end;

////////////////////////////////////////////////////////////////////////////////////////////////////
// GetPlugInfo() record type
////////////////////////////////////////////////////////////////////////////////////////////////////
Type TPlugInfoRec = Record
        PlugName    : string[25];
        PlugVersion : string[5];
        PlugType    : TPlugFlags;
     End;


////////////////////////////////////////////////////////////////////////////////////////////////////
// PROTOTYPES OD EXPORTED PROCEDURES
////////////////////////////////////////////////////////////////////////////////////////////////////
Type TInitPlugInProc   = function  (DeDe_FunctionsList : TFunctionPointerListArray) : Boolean;
     TStartPlugInProc  = procedure (Index : Integer; InData : TListGenIN ; var OutData : TListGenOut);
     TGetPlugInfoProc  = procedure (var PlugInfo : Array of TPlugInfoRec);
     TGetPlugCountProc = function  : Integer;
     TGetPlugVerProc   = function  (Index : Integer): String;


//////////////////////////////////////////////
// EXPORT NAMES
//////////////////////////////////////////////
const GetPlugCountProc_Name  = 'GetPlugCount';
      GetPlugInfoProc_Name   = 'GetPlugInfo';
      StartPlugInProc_Name   = 'StartPlugIn';
      GetPlugVerProc_Name    = 'GetPlugVer';
      InitPlugInProc_Name    = 'InitPlugIn';

implementation

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -