Ŀ
 Presents
  ڿĴ VMag, Issue 3, 1 January 1999
  
                                                 ͻ
                                                      Version: 1.0           
                                                      Release: 30-Oct-1998y  
                                                   Created by: Hard Wisdom   
                                                 ͼ

[30-Oct-1998y][v1.0]
 ࢮ砫쭮 ᠭ 䠩



                            㧪 NE 㫥
                            ~~~~~~~~~~~~~~~~~~~~~~~
                                (⪨ )



[0] ५  ⭠   CAD ணࠬ..........................___
[1]  ᠬ㧪 䠩 NE............................................___
 [1.1] 㭪樨 稪...................................................___
 [1.2]   稪............................................___
 [1.3] 㧪 ᥣ⮢...................................................___
 [1.4] 窠 ᥣ⮢...................................................___
 [1.5]   .....................................................___
[2] ᠭ ᯮ㥬 㭪権...........................................___
[3] ᠭ ᮯ ਠ.......................................___



[0] ५  ⭠   CAD ணࠬ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ਭ᫨   CAD ணࠬ,  ࠡ⠫    ࠢ쭮  (뢠
  ⥫ ;-).       ணࠬ  .  ᪮    
砫 ⮢ ᯠ騪  OptLinker'a (    ),    ⠪    
砫 ᯠ騪  NE , ࠢ       NE  䠩  
ᠬ  娢஢  (஬  PKLITE),    ᠬ    뫮    ᢮
ᯠ騪,        ᤥ.                  
ᠬ㦠騥 樨  ଠ NE,  ⠪  ᬮ   짮
ᠬ ᯠ騪 ( 殬, ࠧ㬥).
    ᭮ ࠫ: OptLinker Loader  믮襭    ᪠  
Accel EDA,  ⠪   㤠 訥 뤥প  ࠢ 䠩  BPW
v1.0 ( 祬   Inprise ᥡ २ ?)


[1]  ᠬ㧪 䠩 NE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ࠧ 뢠 ᮤন 㭨쭮 ᥣ,      
 ⮫쪮  ᠬ㦠 ਫ ଠ  NE  (⠫    
㣨   ᫥).  ᥣ ᮤন 6 㭪権:  3    
।⠢ ࠧࠡ稪 ਫ   3  뤠    ६  짮
樮 ⥬ ;-)  筥 KRNL386.EXE,  ࠢ    ୥   ࠡ
室 ஢    㭪  (    ࠧ  㦥  ).  
ᥣ ᮤন ⠪  ⠡ 㪠⥫       㭪樨  (⢥,
  ।⠢塞 樮 ⥬ ।⠢      㪠⥫
 ॡ㥬 㭪樨).
   ࠧ㬥,  騩      ன  NE  䠩    
塞    .


[1.1] 㭪樨 稪
~~~~~~~~~~~~~~~~~~~~~~~~
   筮 16-⮢ ਫ 㦠 ୥  (16-⮢  ⢥,
 32-   ᥩ    ਬ),    뢠        
। ࠢ 㤠 ᫥ ;-)   ⮣  뢠  ,
  ᠬ 믮  ࠡ. ᫮, 騩 ଠ  䠩  NE  
,   ⠫ 㧪  ਫ      ५  
 ᠬ ਫ (ਬ  -    ॠ  㯠  ⥫
ணࠬ  㧪 ૥ ( 祬   ?)    ᯥ樠
堭 ।   ணࠬ).
     ,    ਫ  ᠬ㦠饥  室    
䠩, 11- (800h ᪠) ।  .    =  1  -  ᠬ㧪,  
筠 ணࠬ, ..  ⮬  砥  樮  ⥬  ࠪ  
䠩   NE 䠩   ᯥ樠 ᥣ  稪  (
 ᯮ짮  ᯮᮡ).


[1.2]   稪
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ⠪,   ᥣ  ᠬ㦠饣  ਫ  ᮤন  ᯥ樠
⠡      ன   室     㦥     ଠ,     
짮⥫᪮ 稪 (室饬 ⠬ )  믮  ᢮  ࠡ.  
⮩  ⠡  室    ᭮  쭨  㪠⥫  16:16      㭪樨
騥   㧪. ଠ ⠡窨  :
͸
 饭  ᠭ                                                         
Ĵ
  00h       ᨨ ଠ 䠩,   ࠢ "A0" .. 3041h    
  02h      १ࢨ஢,  筮 0- 室                       
  04h  D   뢠  ⮢ 楤 㧪 ( ࠧࠡ稪).     
            ⥪⢥  楤 㤥   - BootApp(...)      
  08h  D   뢠  楤 㧪 ᥣ ( ࠧࠡ稪).      
            ⥪⢥  楤 㤥   - LoadAppSeg(...)   
  0Ch      १ࢨ஢ ;-) -, 樮 ⥬ -⠪ -    
           ⠢ - ᫥ ,    ...      
  10h  O   뢠  楤 ⢥ , ।⠢塞 .     
            ⥪⢥  楤 㤥   - MyAlloc(...)      
  14h  O   楤 ᪠ ᯮ㥬 祪 室                      
            ⥪⢥  楤 㤥   - FindOrdinal()     
  18h  D   ⥫  楤 襭 ( ࠧࠡ稪).             
            ⥪⢥  楤 㤥   - ExitApp(...)      
  1Ch      १ࢨ஢, ᪮॥ ᥣ ⠪  .                        
  1Eh      १ࢨ஢, ᪮॥ ᥣ ⠪  .                        
  20h      १ࢨ஢, ᪮॥ ᥣ ⠪  .                        
  22h      १ࢨ஢. (- ,   ᯮ!)          
  24h  O   뢠  楤 䨪樨 , ।⠢塞 .   
            ⥪⢥  楤 㤥   - SetOwner(...)     
͵
 D - ࠧࠡ稪 (i.e. developer), O - 樮 ⥬ ( )       
;
  㪠⥫    ⮩   ⠡窥   (।⠢塞   ࠧࠡ稪)   
室   ᥣ, ⥫ ४஢ 室  稪
   (?   -⠪ ).

   ᫥  ᮧ        (  設⢥  ᢮  ᮢ   
 NE 䠩, 㤥 ⨢ ᯮ짮  ᠬ  稪)  ⠡
ᥣ⮢ ᮤন ᥫ (奭)  㦠 ᥣ⮢.  ⠩  
᫥ મ ,  ⠫쭮    .

    稪 ᯮ  ᠬ ࢮ ᥣ NE 䠩  (ࠧ  ᫥
 "A0" ⠡窮).   稪 室 窠 ᥣ⮢ ਫ  
⥫쭠 ࠡ  .


[1.3] 㧪 ᥣ⮢
~~~~~~~~~~~~~~~~~~~~~~~~
    뢠 㭪  BootApp  (ᬥ饭  4h)  ।⠢塞  ࠧࠡ稪
ਫ. 㭪 ⢮      ᥣ⮢  ਫ  ⬥祭
䫠  PRELOAD    FIXED  맮  ᯥ樠쭮  ।⠢塞    㭪樨
MyAlloc (ᬥ饭 10h). 㧪  ᥣ⮢  筮  ந    ⨨
㭪樨  LoadAppSeg  (।⠢塞  ࠧࠡ稪),  ⥫  䨪
ᥣ⮢ ⢫ 㭪 ।⠢塞  -  SetOwner  (ᬥ饭  24h).
( 㭪 뢠 ⢥         ).  
ᥣ,   ᮧ  BootApp()  -  ⮬᪨  ᥣ  .
 ᥣ, ᮡ⢥  ,    ᮢ⥫  ᮤন      ⥪
ਫ.      ᥣ   室      ४⭮   ࠡ    㭪樨
PatchCodeHandle (樮 ⥬).


[1.4] 窠 ᥣ⮢
~~~~~~~~~~~~~~~~~~~~~~~~
         㧪  ᥣ⮢  LoadAppSeg()  १㦠  ᥣ
襭 樮 ⥬  . ᪮     ⮩  㭪樨
  窨 ᥣ⮢ -  㭪 易  ४⭮  ࠢ
⠬ 1  2  䫠    ⠡  ᥣ⮢.  㬥    ४
 믮 ४஢       (஬    㭪樨).
    ? -)  1 㪠뢠  ⢥      ᥣ  
 2 㪠뢠 ﭨ ᥣ (㦥/). ⢥,    ᠭ
NE ଠ.  ⠫쭮 (  ஡)   ⠬.
   ᫨ 稪 ⢥   ᥣ,   ᥣ    㦥  (  1
⠭,   2 ),    LoadAppSeg()        GlobalHandle()
஢ 䠪᪮ ﭨ     ᥣ,   ᫨    
⢥,  맮  GlobalReAlloc()  室  १ॡ    
ᥣ.
     㦥 ⢥, ⮣ LoadAppSeg()    ᥣ  
䠩  맢 PatchCodeHandle()    ४஢  ஫    㭪樨
ᯮ  㦥 ᥣ. ᫥ ४஢ ஫  室
⠭    쭨  뫪    ⮣  ᥣ.      㪠⥫
।塞 न 室 맮  FindOrdinal()  ᫨  ॡ㥬
.

[1.5]   
~~~~~~~~~~~~~~~~~~~~~~
    室   ᠬ㦥  ਫ  樮  ⥬  뢠
㭪 ExitApp().   㭪    ᥣ  짮  
६ ࠡ ,  ࠢ  㭪  ⮨    ਢ쭮  
RetF (0CBh).  , ⨥ 䠩   吝 ࠡ    
ᥡ 樮 ⥬.


[2] ᠭ ᯮ㥬 㭪権
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

BootApp()
~~~~~~~~~
void BootApp(hBlock, hFile) - 㧪 ਫ.

 hBlock      । ᥫ ᥣ   ,
              ଠ 祭   ଠ NE  䠩.

 hFile        䠩 奭 MS-DOS, । ᪠ 䠩 
             ண 㦠 ਫ.

      ᮤন   ᭮  ଠ樨,    :  
, ⠡  ᥣ⮢,  ࠧ    ⮯  ᥢ  
 䠩 , 㪠⥫    ⥪   ( ) ࠧ.


FindOrdinal()
~~~~~~~~~~~~~
DWORD FindOrdinal(hBlock, wEntryNo)

 hBlock      । ᥫ ᥣ   ,
              ଠ 祭   ଠ NE  䠩.

 wEntryNo    뢠   ⠡ 祪 室 , 楤
             ୥   ᮮ⢥饩 窨 室.

    砥  ᯥ  㤥  饭    ᮮ⢥饩  窨  室,  
⨢ 砥 १ 0. ⢥ ࠬ wEntryNo ⠪  ⥭  
 न.


ExitApp()
~~~~~~~~~
void ExitApp(hBlock)  - 蠥 ᠬ㦥 ਫ.

 hBlock      । ᥫ ᥣ   ,
              ଠ 祭   ଠ NE  䠩.


MyAlloc()
~~~~~~~~~
DWORD MyAlloc(wFlags, wSize, wElem)
  ⢮   ᥣ  ᠬ㦥 ਫ.

 wFlags  뢠  䫠 ᮧ ᥣ.
 wSize    ࠧ   .
 wElem    ⢮ ⮢  ᥣ.

   襥  ᫮  १  ᮤন  奭  ᥣ    砥   ᯥ譮
믮, 襥 ᫮ ᮤন ᥫ. (,   砥,  ᫨  㭪
⢥ ⮫쪮 奭  ᥣ,    襥  ᫮  㤥  ᮤঠ  0,  
襥 - ᠬ 奭).  ⨢ 砥  頥  祭  㤥  0  
襣  襣 ᫮.

   ,   ।塞   ࠬ஬   wFlags      䫠   ᥣ,
室騬  ⠡ ᥣ⮢ ࠧ饭  ।⢥  ᫥  ᭮
ଠ樮          .  樮   ⥬   ᠬ
८ࠧ뢠 wFlags  ᮮ⢥騥 祭 । 맮 GlobalAlloc().
    ᥣ  , 砥 ᤢ    祭  㪠  
wSize ࠬ  ᫮  ।塞 ࠬ஬ wElem.


PatchCodeHandle()
~~~~~~~~~~~~~~~~~
void PatchCodeHandle(hSeg) -  ஫ 㭪樨.

 hSeg   । ᥣ ᮤঠ騩 窨  騥 䨪樨.

    㭪 -      4-  ।⠢塞  ஬  樮  ⥬.
ਫ    ⮩ 㭪樨    堭  ,  ..
ᮧ ᮮ⢥騩 DEF 䠩  ᠢ   ᥪ樨 IMPORTS:

PatchCodeHandle = KERNEL.110

᫨  窠  室    ᥣ  ᯮ  ॣ  DS,      ஫   㤥
஢ ᫥騬 ࠧ:

   ਣ ஫       ஢ ஫
   ~~~~~~~~~~~~~~~~~~~       ~~~~~~~~~~~~~~~~~~~~~~~
      push ds                     mov ax, dgroup
      pop ax
      nop

᫨ 窠 室  ᯮ DS ॣ,  ஫ 㤥 ஢  ⠪
ࠧ:

   ਣ ஫       ஢ ஫
   ~~~~~~~~~~~~~~~~~~~       ~~~~~~~~~~~~~~~~~~~~~~~
      push ds                     mov ax, ds
      pop ax                      nop
      nop

稪 뢠 㭪 PatchCodeHandle()  㭪樨  LoadAppSeg(),  
१㦠 襭   ᥣ.  ।  맮  PatchCodeHandle()
室 맢 SetOwner()  ⠭   ᥣ.  ⥫쭮
稪  ⠭  SINGLEDATA  ଠ樮     
.


LoadAppSeg()
~~~~~~~~~~~~
WORD LoadAppSeg(hBlock, hFile, wSegID)

 㭪 㦠 ᥣ   ࠧ  稢 㤠   
ᥣ.      ५   ࠬ஬   wSegID       ⭮     
ᮮ⢥饬 ਫ.

 hBlock      । ᥫ ᥣ   ,
              ଠ 祭   ଠ NE  䠩.

 hFile       । 奭 䠩 MS-DOS ᮤঠ饣 ਫ (ࠢ -1
               ⮣ 䠩).

 wSegID      । ᥣ 室  १㧪.

   頥 祭  ᥫ  ᥣ  砥  ᯥ    0  
⨢  砥.  ⪮  ᠭ  hBlock  ࠬ  ਢ    㭪樨
BootApp(). ⨩ ࠬ, wSegID, । ஬  ६ .


SetOwner()
~~~~~~~~~~
void SetOwner(hSel, hOwner)

 㭪 뢠 ⤥쭮  ᥣ  㦥 ਫ.

 hSel          奭 ।騩 ᥣ  뢠 
             㦥 㫥

 hOwner      ଠ樮       ஬
             ਢ뢠 ᥣ

ᠭ    ਢ ,   ᠭ    
ਬ  .४ "Windows Internals"
   ᫥  ⮣,    樮  ⥬  ⢮      ᥣ   
ᯮ짮 MyAlloc()   뢠  SetOwner(),  ⥯    ""
㯭   ;-)


[3] ᠭ ᮯ ਠ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     ⮬  ᠭ  ਫ  䠩  OPT_P1.(BIN,IDB)  騥   ਯ
ᯠ騪  OptLinker'a  騥  ᯮ  騥  ஡
 ᠭ    ࢮ筨.  ⠪   ᠡ,  ࠤ  ண
   - ᯠ騪 UNOPT.(EXE,C)  (UNOPTRIP.ASM)

⥫    ᯮ   ந宦...

           Home Page: www.geocities.com/SiliconValley/Hills/7827
              E-Mail:         hardwisdom@geocities.com
