亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 29a-7.007

?? 從29A上收集的病毒源碼
?? 007
?? 第 1 頁 / 共 2 頁
字號:
                 jmp (target + <orig_len>)

     ; sometype __cdecl hook(target, arg1, arg2, argN)
     hook:       ...
                 call target
                 mov eax, retcode
                 retn

  HF_REPUSH_ARGS     = 1
  HF_RETTOCALLER     = unused
  HF_OWN_CALL        = 1
  HF_TARGET_IS_CDECL = 1

     target:     jmp stub

     stub:       (if HF_DISABLE_UNHOOK==0) <unhook_data>
                 (if HF_VAARG) push esp; add dword [esp], 4+nArgs*4
                 push argN
                 push arg1
                 push offset orig_bytes
                 call hook
                 add esp, (4 + nArgs * 4 + HF_VAARG?4:0)
                 retn
     orig_bytes: <orig_bytes>
                 jmp (target + <orig_len>)

     ; sometype __cdecl hook(target, arg1, arg2, argN)
     hook:       ...
                 call target
                 add esp, (nArgs * 4)
                 mov eax, retcode
                 retn

  UninstallHook() is only available if HF_DISABLE_UNHOOK flag were NOT
  specified while calling InstallHook subroutine.

int UninstallHook(void* hookHandle,         /* returned by InstallHook()  */
                  void* hProcess );         /* process handle, -1=current */

  hookHandle -- is a ponter to the hook stub,
                returned by InstallHook subroutine.

  hProcess -- same as in InstallHook()

 Return values:

   UninstallHook() returns 1 if hook is removed, and 0 if error.

                                3. SDE INTRO
                                ~~~~~~~~~~~~

 In some cases, we need to execute own code in the remote process.
 There are two common ways of doing such a bad thing:

 1. remotely load code from the external dll file,
    by means of calling CreateRemoteThread() two times:
    1st time remotely call LoadLibrary to load own dll,
    2nd time remotely call own dll's function.

 2. inject some special code snippet into remote process.

 I'd like to tell ya how to do it in C/C++, without any problems.

 Imagine, that you have some C/C++ subroutines, and you want to inject'em
 into the remote context, at different virtual address.
 What will happen in such case?

 1st, your subroutines use text strings.

 This can be solved by copying all the text strings
 into single string array (char**), and copying that array into the
 remote context together with the executable code;
 then, each subroutine will receive pointer to that string table as an
 argument, and use text strings as StringTable[n].

 2nd, your subroutines use binary data structures.

 This can be solved by means of collecting all these structures into
 some binary array and pass that array into the remote context,
 the same as string table; then subroutines will receive pointer to that
 structure as well as its size, and use it as a workspace.

 3rd, your subroutines use external API calls.

 This can be solved by means of disassembling all the subroutines
 instruction by instruction, and replacing external calls with
 fixed calls, in such way that when subroutines are copied into the
 remote context, all external calls will point to the same api functions,
 as in original subroutines location.
 This is based on assumption, that main system dll's in different
 contexts are loaded at the same base addresses.
 If you want to use some specific dll, which can be loaded at
 variable image base addresses, you can load its api dynamically.

 4th, i can miss something else, so you should know how your c/c++ source
 is compiled into assembly code, how each line of code looks in both
 high and low level representation.

 5th, you cant use c++ classes, since method tables should then be also
 copied/modified into other location; but this probably could be solved.

 So, how it all looks like?

               step 1                      step 2         step 3
                 ^                           ^              ^
                / \                         / \            / \
 <functions>    --> reassembled, copied     --> +--------+
 <string table> --> reassembled, copied     --> |        |
 <binary data>  --> unchanged, just copied  --> |  temp  |     temp buffer is
                    startup code, generated --> | buffer | --> injected into
                    call table, generated   --> |        |     remote process
                    call table init code    --> |        |     and/or executed
                    reloc table, generated  --> +--------+


 step 1

   you pass pointers to
     a) specially written (in c/c++) functions,
     b) string table (optionally, if specified)
     c) binary data (--//--)
   to the SDE engine;

   it reassembles all the stuff into given temp buffer,
   optionally (if VA == NULL) generates relocation table and call table,
   and optionally (if SDE_RELOAD_FUNCTIONS flag is specified),
   builds call table initialization code.

 step 2

   temp buffer is (optionally) injected into the remote process,
   you can do it for example using VirtualProtectEx, VirtualAllocEx
   and WriteProcessMemory functions

 step 3

   remote thread is created using CreateRemoteThread function,
   and/or some remote hook (maybe using HOOKLIB engine) is installed

                                  4. SDE
                                  ~~~~~~

 Here is a description of the SDE, or Subroutine Displacement Engine,
 which allows you to do step 1 of the stuff described above with a single
 function call.

int Reassemble(void* xStart,             /* 1st subroutine to reassemble     */
               void* xEntry,             /* "main" subroutine                */
               void* xEnd,               /* last subroutine to reassemble    */
               char** xStrTab,           /* string table                     */
               void* binData,            /* user data                        */
               unsigned long binSize,    /* user data size                   */
               void* buf,                /* buffer to reassemble into        */
               unsigned long maxbufsize, /* max buffer size                  */
               unsigned long *bufsize,   /* on output, used buffer size      */
               unsigned long VA,         /* VA of new location, 0=reloc code */
               unsigned long *entry,     /* on output, entry point va/rva    */
               unsigned long flags);     /* flags, SDE_xxx                   */

  xStart -- is an empty subroutine in your code, used to define start address
            of the set of "remote" subroutines.
            We assume that C/C++ compiler places subroutines in memory
            in exact order as if they were located in source file.

  xEntry -- is an "entrypoint" subroutine, which is called in the remote
            context.

               void __cdecl xEntry(unsigned long VA,
                                   unsigned long injected_size,
                                   char** xStrTab,
                                   unsigned char* binData,
                                   unsigned long binSize)

               xEntry is __cdecl subroutine;

               xEntry arguments are:

                 VA, xStrTab,
                 binData, binSize -- pointers to the same stuff
                                     as passed to Reassemble(),
                                     but, for sure, relocated according
                                     to given VA, where all this stuff
                                     will be placed.

                 injected_size    -- size of the injected temp_buffer

               If xEntry is executed using CreateRemoteThread,
               return is equal to ExitThread,
               other cases depends on your fantasy.

  xEnd   -- is an empty subroutine, used to define end address of the
            set of "remote" functions.

  xStrTab -- string table, used by your functions.
             can be NULL, if it is not required.

             string table is in 'char* []' format,

               if SDE_SKIP_LOADLIBRARY flag is NOT specified, then

                 1st entry of the string table is DLL list,
                 each dll name (including last one) ends with ';' character,
                 which is replaced with \0 in the remote context; these
                 DLL's will be LoadLibrar'ied by the generated startup code;

               last string table entry is NULL;

               other string table entries are use-defined text strings.

  binData -- pointer to some user-defined data, can be NULL if not required
  binSize -- size of the user-defined data, can be 0

 buf        -- temporary buffer, to place generated stuff into
 maxbufsize -- max size of the temporary buffer
 bufsize    -- on return, is filled with size of generated stuff in the buffer

  VA      -- virtual address in the remote context,
             at which temp buffer will be placed.

             xStart address in the current context equals to VA in the
             remote context.

             NOTE:
             We should know VA _before_ generation of the temp buffer;
             this means that obtaining virtual address in the remote process
             for the future temp buffer placement begins not after,
             but BEFORE temp buffer generation.

             if VA == NULL, base-independend code will be generated,
             i.e. code including relocation table and call table;
             see also SDE_RELOAD_FUNCTIONS flag

  entry   -- pointer to variable, which receives remote va/rva of the generated
             startup code;
             if VA == NULL, entry is relative;
             if VA != NULL, entry is VA-based

               starup code does the following:
               1. if VA == NULL, initializes relocations
               2. if SDE_SKIP_LOADLIBRARY flag is NOT specified,
                    loads DLL's specified in the StringTable[0]
               3. passes control to xEntry subroutine.

  flags   -- bitset of the SDE_xxx values

     SDE_SKIP_LOADLIBRARY  -- ignore StringTable[0],
                              i.e. do not load libraries specified there

     SDE_RELOAD_FUNCTIONS  -- used only if VA == 0,
                              makes independend code,
                              i.e. each called api name will be replaced with
                              its checksum, to be loaded on startup

 Comments:

  except that all, after buffer is generated,
  the following magic dword's are replaced with corresponding values:

    SDE_MAGIC_VA
    SDE_MAGIC_XSTRTAB
    SDE_MAGIC_BINDATA
    SDE_MAGIC_BINSIZE

  i.e. if you write in your "remote" subroutine something like

    unsigned long va = SDE_MAGIC_VA;

  then in the remote context this dword will be replaced with VA value.

  !!! Make sure you're not doing something like
  !!!  char foo = ((char*)SDE_MAGIC_BINDATA)[123];
  !!! - its incorrect! Magic values should be used in such way that
  !!! they appear in the assembly instructions unchanged.

 Return values:

   Reassemble() returns 1 if buffer is assembled, and 0 if an error occured.

                              5. CONCLUSION
                              ~~~~~~~~~~~~~

  Using these engines you can hook subroutines in the remote contexts
  (on NT boxes) with your own C/C++ functions, in run-time,
  without external files.

  See examples for some things can be done using engines.

  This can be (and is) used in memory residency and fw/av bypassing techniques.

  However, this is not good enough, since there are drivers and ring0 api,
  which can be used for such purposes much more effectively.

  Supporting 9x/me systems:

  since you can not do Virtual<Alloc|Free>Ex on the 9x boxes,
  you should use known remote addresses there.

  Such addresses can be found by means of analyzing PE structure
  of the executable image file, or using known stack, heap and other
  addresses where exists some unused mapped memory.

                                  * * *

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合亚洲图片综合区| 国产乱色国产精品免费视频| 精品一区精品二区高清| 欧美色电影在线| 一区二区三区在线观看动漫| 国产一区91精品张津瑜| 亚洲精品一区二区三区影院| 日韩影院在线观看| 欧美猛男超大videosgay| 久久久一区二区| 久久99精品国产| 亚洲综合999| 欧美日韩电影一区| 成人激情免费视频| 亚洲欧美偷拍三级| 91色乱码一区二区三区| 亚洲欧美福利一区二区| 久久这里只精品最新地址| 成人h版在线观看| 久久成人免费网| 欧美国产一区在线| 一本一道综合狠狠老| 亚洲精品网站在线观看| 欧美精三区欧美精三区| 91丨九色丨尤物| 成人福利在线看| 高清在线观看日韩| 一区二区三区在线视频观看| 国产喷白浆一区二区三区| 日本韩国一区二区三区视频| 青青草97国产精品免费观看| 久久久久久久久99精品| 日韩欧美一二区| 高清不卡一区二区| 国产一区二区三区电影在线观看| 青青草成人在线观看| 天堂一区二区在线| 香蕉久久夜色精品国产使用方法| 日韩丝袜情趣美女图片| 99久久99久久综合| 日本成人在线不卡视频| 亚洲欧美一区二区在线观看| 欧美日韩黄视频| 欧美午夜精品免费| 成人免费视频视频| 美女视频一区二区三区| 日韩理论片一区二区| 精品精品国产高清a毛片牛牛 | 国产精品视频线看| 欧美日韩国产综合视频在线观看| 在线亚洲一区观看| 欧美性色欧美a在线播放| 欧美性猛片xxxx免费看久爱 | 久久久久国产免费免费| 337p日本欧洲亚洲大胆色噜噜| 日韩精品在线一区| 久久久久久久精| 中文字幕精品—区二区四季| 国产精品乱人伦中文| 亚洲嫩草精品久久| 婷婷综合另类小说色区| 亚洲欧美一区二区三区极速播放 | 欧美日韩国产区一| 91麻豆精品国产91久久久使用方法| 成人免费看片app下载| 97成人超碰视| 欧美色图在线观看| 日韩一级黄色大片| 国产午夜精品理论片a级大结局| 欧美一区二区三区色| 欧美亚洲愉拍一区二区| 3d成人h动漫网站入口| 2020国产精品自拍| 最新日韩av在线| 爽好久久久欧美精品| 久久99蜜桃精品| 不卡av电影在线播放| 欧美午夜精品久久久久久孕妇| 欧美精品精品一区| 国产农村妇女精品| 亚洲综合一区二区| 精品午夜久久福利影院 | 91国产免费观看| 欧美一区二区视频免费观看| 久久精品免费在线观看| 一区二区三区四区国产精品| 久久av中文字幕片| 91久久奴性调教| 欧美精品一区二区三区四区| 亚洲美女电影在线| 黑人精品欧美一区二区蜜桃| 久久国产福利国产秒拍| 不卡的看片网站| 日韩一级大片在线观看| 亚洲精品国久久99热| 国产资源精品在线观看| 一本在线高清不卡dvd| 欧美精品一区二区三| 亚洲无人区一区| 婷婷激情综合网| 成人动漫av在线| 精品久久久久久无| 久久久噜噜噜久噜久久综合| 亚洲综合精品久久| 成人免费电影视频| 日韩一区二区视频在线观看| 亚洲精品乱码久久久久久| 精品亚洲aⅴ乱码一区二区三区| 欧美在线free| 国产精品第五页| 一区二区免费视频| 成人中文字幕电影| 精品美女在线观看| 首页欧美精品中文字幕| 色综合色狠狠综合色| 国产天堂亚洲国产碰碰| 毛片av一区二区| 欧美妇女性影城| 亚洲制服丝袜av| 99久久综合精品| 欧美精品久久天天躁| 一片黄亚洲嫩模| 99re成人精品视频| 中文一区二区完整视频在线观看| 久久精品国产免费看久久精品| 欧美亚洲综合另类| 亚洲午夜影视影院在线观看| 91在线国内视频| 中文字幕视频一区二区三区久| 国产在线不卡视频| 精品国产乱码久久久久久图片 | 91一区二区三区在线播放| 国产亚洲一区二区三区| 激情综合网最新| 2023国产精华国产精品| 激情伊人五月天久久综合| 精品日韩一区二区三区免费视频| 丝瓜av网站精品一区二区| 91精品欧美福利在线观看| 首页欧美精品中文字幕| 日韩一区二区在线观看视频播放| 日韩高清不卡一区二区三区| 69堂成人精品免费视频| 日韩精品乱码免费| 欧美一区二区三区的| 免费看日韩a级影片| 欧美成人a∨高清免费观看| 精品亚洲欧美一区| 国产亚洲午夜高清国产拍精品 | 一本色道久久综合亚洲91 | 国产专区综合网| 日本一区二区三区视频视频| 成人激情综合网站| 亚洲色图丝袜美腿| 欧美三级乱人伦电影| 免费的成人av| 久久久久国产精品麻豆| 96av麻豆蜜桃一区二区| 亚洲一二三四区| 日韩一级黄色大片| 成人免费黄色大片| 亚洲精品你懂的| 91精品国产综合久久蜜臀| 韩国成人精品a∨在线观看| 久久久国产精品麻豆| 99精品国产99久久久久久白柏 | 毛片不卡一区二区| 国产精品丝袜一区| 欧美亚洲一区三区| 久久99久久精品| 中文字幕在线不卡一区二区三区| 欧美在线一二三四区| 久久99精品久久只有精品| 国产精品国产馆在线真实露脸| 色94色欧美sute亚洲线路二| 日韩一区精品视频| 国产欧美精品在线观看| 在线观看成人小视频| 激情综合五月婷婷| 亚洲女爱视频在线| 日韩欧美国产综合| 91亚洲精品久久久蜜桃| 免费一区二区视频| 日韩理论在线观看| 精品国产一区二区三区久久影院| 成人国产亚洲欧美成人综合网| 亚洲国产精品自拍| 中文在线资源观看网站视频免费不卡| 欧美色综合网站| www.在线欧美| 免费成人你懂的| 亚洲精品欧美综合四区| 久久久精品黄色| 91精品一区二区三区久久久久久| 国产91精品一区二区麻豆亚洲| 亚洲电影视频在线| 国产精品国产成人国产三级| 欧美大胆一级视频| 欧美少妇bbb| 色婷婷综合五月|