o
    �õ±j´  ã                   @   sb   d dl mZ ddddddddd	d
dddddœdddddddddddddddœgZG dd„ dƒZdS )é    )ÚPROCESSOR_ARCHITECTUREé0   é   é   é   é8   é@   ép   é$   é   é   é    éH   é   )ÚpebÚbeing_debuggedÚimage_base_addressÚprocess_parametersÚ
image_pathÚcommand_lineÚwindow_titleÚdll_pathÚcurrent_directoryÚstandard_inputÚstandard_outputÚstandard_errorÚenvironment_variablesÚbufferé`   é°   éP   é(   é€   c                   @   s8   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ ZdS )ÚPEBc                 C   s^   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _g | _d S ©N)ÚaddressÚis_x64Úptr_sizer   r   r   r   r   r   r   r   r   r   r   r   ©Úself© r*   úŠ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/structures/peb.pyÚ__init__0   s   
zPEB.__init__c                 C   sj   |  |¡ t | d¡d¡}|sdS |  |t| j d  ¡ t | | j¡d¡}|  |¡ | |¡ d¡S )Nr   ÚlittleÚ r   úutf-16)ÚmoveÚintÚ
from_bytesÚreadÚPEB_OFFSETSr&   r'   Údecode)r)   ÚreaderÚaddrÚstring_lengthÚbuff_var*   r*   r+   Úread_unicode_string_propertyA   s   

z PEB.read_unicode_string_propertyc                 C   s  |   ¡ }| ¡ }tƒ }|jjtjk |_|jrdnd|_t	|jƒ}| 
| jjd jt| d  ¡ t	 | |j¡d¡|_| 
|jt| d  ¡ t	 | d¡d¡|_| 
|jt| d  ¡ t	 | |j¡d¡|_| 
|jt| d	  ¡ t	 | |j¡d¡}| ||t| d
  ¡|_| ||t| d  ¡|_| ||t| d  ¡|_| ||t| d  ¡|_| ||t| d  ¡|_| 
|t| d  ¡ t	 | |j¡d¡|_| 
|t| d  ¡ t	 | |j¡d¡|_| 
|t| d  ¡ t	 | |j¡d¡|_| 
|t| d  ¡ t	 | |j¡d¡}| 
|¡ | |jj|j ¡}| d¡ }�r�|dk�r�|d |… d   d¡}	|	}
d}|	 d¡dk�rR|	 !dd¡\}
}|j" #|
|dœ¡ |t$|	ƒd d 7 }| 
|¡ | |jj|j ¡}| d¡ }�r�|dk�s3|S )Nr   r   r   r   r-   r   é   r   r   r   r   r   r   r   r   r   r   r   s     éÿÿÿÿó    r/   r.   ú=)ÚnameÚvaluer   )%Ú
get_readerÚget_buffered_readerr#   ÚsysinfoÚProcessorArchitecturer   ÚINTELr&   r'   r1   r0   ÚthreadsÚTebr4   r2   r3   r%   r   r   r:   r   r   r   r   r   r   r   r   Úcurrent_segmentÚend_addressÚcurrent_positionÚfindr5   Úsplitr   ÚappendÚlen)Úminidumpfiler6   Úbuff_readerr   Úoffset_indexr   Úenvironment_vaÚ
env_bufferÚenv_lenÚdecoded_envr?   r@   r*   r*   r+   Úfrom_minidumpK   sb   
 ÿÿÿÿ

÷zPEB.from_minidumpc                 C   sŠ   d  dd„ | jD ƒ¡}dt| jƒ› d| j› dt| jƒ› d| j› d| j› d	| j› d
| j	› d| j
› d| j› d| j› d| j› d| j› d|› d�S )Nz
	c                 S   s"   g | ]}|d  › d|d › �‘qS )r?   r>   r@   r*   )Ú.0Úenvr*   r*   r+   Ú
<listcomp>‘   s   " zPEB.__str__.<locals>.<listcomp>z
PEB ADDR: z
BeingDebugged: z
ImageBaseAddress: z
ProcessParameters: z
ImagePath: z
CommandLine: z
WindowTitle: z

DllPath: z
CurrentDirectory: z
StandardInput: z
StandardOutput: z
StandardError: z
EnvironmentVariables: 
	Ú
)Újoinr   Úhexr%   r   r   r   r   r   r   r   r   r   r   r   )r)   Úenvsr*   r*   r+   Ú__str__�   s8   ÿþýüûúùø	÷
öõôòzPEB.__str__c                 C   s   |   ¡ S r$   )r^   r(   r*   r*   r+   Ú__repr__£   s   zPEB.__repr__N)	Ú__name__Ú
__module__Ú__qualname__r,   r:   ÚstaticmethodrV   r^   r_   r*   r*   r*   r+   r#   /   s    

Dr#   N)Ú!minidump.streams.SystemInfoStreamr   r4   r#   r*   r*   r*   r+   Ú<module>   sB    îîë+