§
    ²P»j	  ã                  óx   — d Z ddlmZ ddlZddlZddlZdZg d¢Zd\  ZZ	dd„Z
dd„Zedk    r e¦   «          dS dS )zâStatic triage tren FILE vggame.exe (doc file tren dia, khong mo process, khong ghi).
Muc dich: thu thap bang chung doc lap - section, keyword NPC/object, dword giong con tro.
KHONG ket luan - chi dem va trich mau co gioi han.
é    )ÚannotationsNz%C:\JXVCTK\JxVoCongTruyenKy\vggame.exe)s   npcs   Npcs   NPCs   objects   Objects   monsters   Monsters   actors   Actors   targets   Targets   enemys   Enemy)i  @ i  € ÚbufÚbytesÚreturnÚfloatc                ó®   ‡— | sdS t          j        | ¦  «        }t          | ¦  «        Št          ˆfd„|                     ¦   «         D ¦   «         ¦  «         S )Ng        c              3  óR   •K  — | ]!}|‰z  t          j        |‰z  ¦  «        z  V — Œ"d S )N)ÚmathÚlog2)Ú.0ÚvÚns     €ú:c:\Projects\JX\scripts\re_npc_list\static_triage_vggame.pyú	<genexpr>zentropy.<locals>.<genexpr>   s:   øè è € Ð?Ð?¨q��Q‘�$œ) A¨¡EÑ*Ô*Ñ*Ð?Ð?Ð?Ð?Ð?Ð?ó    )ÚcollectionsÚCounterÚlenÚsumÚvalues)r   Úcr   s     @r   Úentropyr      sY   ø€ Øð ØˆsÝÔ˜CÑ Ô €AÝˆC‰Œ€AÝÐ?Ð?Ð?Ð?°A·H²H±J´JÐ?Ñ?Ô?Ñ?Ô?Ð?Ð?r   ÚNonec                 óZ  — t          t          d¦  «                             ¦   «         } t          dt          › �¦  «         t          dt	          | ¦  «        › dt          | d d…         ¦  «        d›dt          | t	          | ¦  «        dz  t	          | ¦  «        dz  dz   …         ¦  «        d›d	�¦  «         	 d
d l}|                     t          d¬¦  «        }t          dt          |j	        j
        ¦  «        › dt	          |j        ¦  «        › �¦  «         |j        D ]a}|                     ¦   «         d d…         }t          d|j        ›d|j        d›d|j        d›dt          |¦  «        d›d|j        d›�
¦  «         Œb|                     ¦   «          n)# t$          $ r}t          d|› �¦  «         Y d }~nd }~ww xY wt          d¦  «         t&          D ]£}d„ t)          j        t)          j        |¦  «        | ¦  «        D ¦   «         d d…         }t	          t)          j        t)          j        |¦  «        | ¦  «        ¦  «        }t          d|                     ¦   «         ›d|› dd„ |D ¦   «         › �¦  «         Œ¤t          d¦  «         d
d l}	g }
t5          d
t	          | ¦  «        dz
  d¦  «        D ]c}|	                     d | |¦  «        d
         }t8          |cxk    rt:          k     r-n Œ9|
                     |¦  «         t	          |
¦  «        d!k    r nŒdt          d"d#„ |
D ¦   «         › d$�¦  «         d S )%NÚrbzfile=zsize=z ent_total=i   z.3fz
(1MB dau) é   z(giua)r   T)Ú	fast_loadzmachine=z
 sections=z  sec name=z	 vsize=0xÚXz raw=0xz ent=z	 chars=0xÚ08Xzpefile: z3== keyword strings (toi da 3 offset mau/keyword) ==c                ó6   — g | ]}|                      ¦   «         ‘ŒS © )Ústart)r   Úms     r   ú
<listcomp>zmain.<locals>.<listcomp>,   s    € ÐDÐDÐD˜a�—’‘	”	ÐDÐDÐDr   é   z  z: total=z sample_offsets=c                ó,   — g | ]}t          |¦  «        ‘ŒS r!   ©Úhex©r   Úos     r   r$   zmain.<locals>.<listcomp>.   s   € ÐAWÐAWÐAWÈQÅ#ÀaÁ&Ä&ÐAWÐAWÐAWr   z3== dword giong con tro image [0x400000,0x800000) ==é   z<Ié   z  dword dau tien khop: c                ó,   — g | ]}t          |¦  «        ‘ŒS r!   r'   r)   s     r   r$   zmain.<locals>.<listcomp>8   s   € Ð$:Ð$:Ð$:°¥S¨¡V¤VÐ$:Ð$:Ð$:r   z (can dem full neu can))ÚopenÚGAMEÚreadÚprintr   r   ÚpefileÚPEr(   ÚFILE_HEADERÚMachineÚsectionsÚget_dataÚNameÚMisc_VirtualSizeÚSizeOfRawDataÚCharacteristicsÚcloseÚ	ExceptionÚKEYWORDSÚreÚfinditerÚescapeÚfindallÚdecodeÚstructÚrangeÚunpack_fromÚIMG_LOÚIMG_HIÚappend)Údatar2   ÚpeÚsÚrawÚexÚkwÚoffsÚtotalrD   ÚhitsÚoffr   s                r   ÚmainrT      s¦  € Ý•�dÑÔ× Ò Ñ"Ô"€DÝ	ˆ.•$ˆ.ˆ.ÑÔÐÝ	ð N•#�d‘)”)ð Nð N­°°X°g°X´Ñ(?Ô(?Ð
Oð Nð NÝ�T�#˜d™)œ) Q™,¥s¨4¡y¤y°!¡|°wÑ'?Ð?Ô@ÑAÔAÐ
MðNð Nð Nñ Oô Oð Oð
ØˆˆˆØ�YŠY•t tˆYÑ,Ô,ˆÝÐR�˜Rœ^Ô3Ñ4Ô4ÐRÐRÅÀBÄKÑ@PÔ@PÐRÐRÑSÔSÐSØ”ð 	gð 	gˆAØ—*’*‘,”,˜y ˜yÔ)ˆCÝð f ¤ð fð f°1Ô3EÐJð fð fØœ?Ðeðfð fÝ3:¸3±<´<Ðeðfð fØNOÔN_Ðeðfð fñ gô gð gð gà
�Š‰
Œ
ˆ
ˆ
øÝð ð ð Ýˆo˜ˆoˆoÑÔÐÐÐÐÐÐøøøøðøøøå	Ð
?Ñ@Ô@Ð@Ýð [ð [ˆØDÐD¥2¤;­r¬y¸©}¬}¸dÑ#CÔ#CÐDÑDÔDÀRÀaÀRÔHˆÝ•B”J�rœy¨™}œ}¨dÑ3Ô3Ñ4Ô4ˆÝÐY�2—9’9‘;”;ÐYÐY¨%ÐYÐYÐAWÐAWÐRVÐAWÑAWÔAWÐYÐYÑZÔZÐZÐZÝ	Ð
?Ñ@Ô@Ð@Ø€M€M€MØ€DÝ�Q�˜D™	œ	 A™ qÑ)Ô)ð ð ˆØ×Ò˜t T¨3Ñ/Ô/°Ô2ˆÝ�QÐÐÒÐ�ÒÐÐÐÐØ�KŠK˜ÑÔÐÝ�4‰yŒy˜AŠ~ˆ~Ø�øÝ	Ð
SÐ$:Ð$:°TÐ$:Ñ$:Ô$:Ð
SÐ
SÐ
SÑTÔTÐTÐTÐTs   Â5CF Æ
F7ÆF2Æ2F7Ú__main__)r   r   r   r   )r   r   )Ú__doc__Ú
__future__r   r   r
   r?   r/   r>   rG   rH   r   rT   Ú__name__r!   r   r   ú<module>rY      sº   ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	à/€ðJð Jð J€ð $�€ˆð@ð @ð @ð @ðUð Uð Uð UðB ˆzÒÐØ€D�F„F€F€F€Fð Ðr   