o
    �õ±j  ã                   @   sL   d dl Z d dlT G dd„ dƒZG dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)Ú*c                   @   ó(   e Zd Zdd„ Zdd„ Zedd„ ƒZdS )ÚMINIDUMP_UNLOADED_MODULE_LISTc                 C   s   d | _ d | _d | _d S ©N)ÚSizeOfHeaderÚSizeOfEntryÚNumberOfEntries©Úself© r   úœ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/UnloadedModuleListStream.pyÚ__init__   s   
z&MINIDUMP_UNLOADED_MODULE_LIST.__init__c                 C   sD   | j jjdddd�}|| jjdddd�7 }|| jjdddd�7 }|S ©Né   ÚlittleF©Ú	byteorderÚsigned)r   ÚvalueÚto_bytesr   r   ©r
   Útr   r   r   r      s   z&MINIDUMP_UNLOADED_MODULE_LIST.to_bytesc                 C   sR   t ƒ }tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_|S r   )r   ÚintÚ
from_bytesÚreadr   r   r   )ÚbuffÚmumlr   r   r   Úparse   s
   z#MINIDUMP_UNLOADED_MODULE_LIST.parseN©Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr   r   r   r   r   r      s
    r   c                   @   r   )ÚMINIDUMP_UNLOADED_MODULEc                 C   s"   d | _ d | _d | _d | _d | _d S r   )ÚBaseOfImageÚSizeOfImageÚCheckSumÚTimeDateStampÚModuleNameRvar	   r   r   r   r   !   s
   
z!MINIDUMP_UNLOADED_MODULE.__init__c                 C   sp   | j jjdddd�}|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|S ©Né   r   Fr   r   )r$   r   r   r%   r&   r'   r(   r   r   r   r   r   (   s   z!MINIDUMP_UNLOADED_MODULE.to_bytesc                 C   s‚   t ƒ }tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_|S r)   )	r#   r   r   r   r$   r%   r&   r'   r(   )r   Úmumr   r   r   r   0   s   zMINIDUMP_UNLOADED_MODULE.parseNr   r   r   r   r   r#       s
    r#   c                   @   sP   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ Zedd„ ƒZ	dd„ Z
dS )ÚMinidumpUnloadedModulec                 C   s.   d | _ d | _d | _d | _g | _d | _d | _d S r   )ÚnameÚbaseaddressÚsizeÚ
endaddressÚmemorysegmentsÚchecksumÚ	timestampr	   r   r   r   r   ;   s   
zMinidumpUnloadedModule.__init__c                 C   sH   t ƒ }| j|_| j|_| j|_| j|_t	 
| j|¡|_|j|j |_|S )ú.
		mod: MINIDUMP_MODULE
		buff: file handle
		)r,   r$   r.   r%   r/   r&   r2   r'   r3   ÚMINIDUMP_STRINGÚget_from_rvar(   r-   r0   ©Úmodr   Úmmr   r   r   r   E   s   zMinidumpUnloadedModule.parsec                 Ã   sP   �t ƒ }| j|_| j|_| j|_| j|_t	 
| j|¡I dH |_|j|j |_|S )r4   N)r,   r$   r.   r%   r/   r&   r2   r'   r3   r5   Úaget_from_rvar(   r-   r0   r7   r   r   r   ÚaparseT   s   €zMinidumpUnloadedModule.aparsec                 C   s8   |D ]}| j |j  kr| jk rn q| j |¡ qd S r   )r.   Ústart_virtual_addressr0   r1   Úappend)r
   ÚsegmentsÚsegmentr   r   r   Úassign_memory_regionsc   s
   €þz,MinidumpUnloadedModule.assign_memory_regionsc                 C   s   d| j t| jƒt| jƒf S )Nz1Unloaded Module name: %s Size: %s BaseAddress: %s)r-   Úhexr/   r.   r	   r   r   r   Ú__str__h   s   zMinidumpUnloadedModule.__str__c                   C   s   g d¢S )N)zModule nameÚBaseAddressÚSizeÚ
Endaddressr   r   r   r   r   Ú
get_headerk   s   z!MinidumpUnloadedModule.get_headerc                 C   s$   t | jƒd| j t| jƒd| j gS )Nz0x%08x)Ústrr-   r.   rA   r/   r0   r	   r   r   r   Úto_rowt   s
   üzMinidumpUnloadedModule.to_rowN)r   r    r!   r   r"   r   r;   r@   rB   rF   rH   r   r   r   r   r,   :   s    



r,   c                   @   s<   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ ZdS )ÚMinidumpUnloadedModuleListc                 C   s
   g | _ d S r   )Úmodulesr	   r   r   r   r   ~   s   
z#MinidumpUnloadedModuleList.__init__c                 C   sd   t ƒ }| | jj¡ t | | jj¡¡}t 	|¡}t
|jƒD ]}t 	|¡}|j t 	||¡¡ q|S r   )rI   ÚseekÚLocationÚRvaÚioÚBytesIOr   ÚDataSizer   r   Úranger   r#   rJ   r=   r,   )Údirr   r   Úchunkr   Ú_r8   r   r   r   r   �   s   

z MinidumpUnloadedModuleList.parsec           	      Ã   s€   �t ƒ }| | jj¡I d H  | | jj¡I d H }t |¡}t 	|¡}t
|jƒD ]}t 	|¡}t ||¡I d H }|j |¡ q'|S r   )rI   rK   rL   rM   r   rP   rN   rO   r   r   rQ   r   r#   r,   r;   rJ   r=   )	rR   r   r   Ú
chunk_datarS   r   rT   r8   Údrr   r   r   r;   �   s   €


z!MinidumpUnloadedModuleList.aparsec                 C   s0   g }|  t ¡ ¡ | jD ]	}|  | ¡ ¡ q|S r   )r=   r,   rF   rJ   rH   )r
   r   r8   r   r   r   Úto_table›   s
   
z#MinidumpUnloadedModuleList.to_tablec                 C   s   dt |  ¡ ƒ }|S )Nz== UnloadedModuleList ==
)Úconstruct_tablerW   r   r   r   r   rB   ¢   s   z"MinidumpUnloadedModuleList.__str__N)	r   r    r!   r   r"   r   r;   rW   rB   r   r   r   r   rI   }   s    

rI   )rN   Úminidump.common_structsr   r#   r,   rI   r   r   r   r   Ú<module>   s   C