§
    ¥�¬j§Q  ã                  ó  — U d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	 ddl
m
Z
 ddlmZ ddlmZmZmZmZmZmZ  ee¦  «                             ¦   «         j        j        j        Zej                             d eedz  d	z  ¦  «        ¦  «         	 ddlZn# e$ r dZY nw xY wdd
lmZ h d£Z de!d<   h d£Z"de!d<   e G d„ d¦  «        ¦   «         Z#e G d„ d¦  «        ¦   «         Z$e G d„ d¦  «        ¦   «         Z% G d„ d¦  «        Z&dS )uY  AutoPOE2 - Zero-Day Memory Calibration Pipeline (Tier 1 RPM / Invariant INV-BUILD-01).
========================================================================================
Quáº£n trá»‹ Ä‘á»™ng cÆ¡ Ä‘á»�c bá»™ nhá»› RPM (Tier 1):
- QuÃ©t vi sai PE header & Section Layout Hash (INV-BUILD-01, fingerprint.py).
- Pattern SigScan / AOB Scanner siÃªu tá»‘c (< 180s, thÆ°á»�ng < 5s) cho InGameState, GameController,
  CameraMatrix WorldToScreen, LocalPlayer.
- Loáº¡i bá»� triá»‡t Ä‘á»ƒ neo tÄ©nh 0x290/0x540/0x120 (INV-MEM-DYNAMIC-XYZ), Ã©p PlayerFinder 16MB vi sai.
- Quáº£n trá»‹ Vitals Fingerprint: KhÃ¡ng UI Marker 778/779, nháº­n diá»‡n chÃ­nh xÃ¡c CI (HP 1/1),
  Energy Shield (+0xC), Ward (+0x20), Mana (+0x420) vÃ  Spirit (+0x44C) tÃ¡ch rá»�i.
- Tá»± Ä‘á»™ng sinh vÃ  cáº­p nháº­t offsets_<BUILD_ID>.toml vÃ  bin/Release/offsets.toml.
- Kiá»ƒm toÃ¡n Gate 2 (Memory Drift) tá»« zero_day_gate.py.

TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 4: Module hÃ³a tá»‘i Ä‘a, tráº§n file < 500 dÃ²ng.
- Rule 8: INV-BUILD-01, INV-OFFSET-01, INV-MEM-DYNAMIC-XYZ, INV-VIT-01.
- Rule 14: Provenance Ä‘áº§y Ä‘á»§, 100% test PASS.
é    )ÚannotationsN)Ú	dataclassÚfield)Údatetime)ÚPath)ÚAnyÚDictÚListÚOptionalÚSetÚTupleÚtoolsÚre_pipeline)ÚZeroDayInvariantGate>	   Úxyz_addrÚ	mana_addrÚcamera_addrÚingame_addrÚplayer_addrÚshield_addrÚspirit_addrÚterrain_addrÚfog_density_addrzSet[str]ÚFORBIDDEN_ABSOLUTE_KEYS>   é   é@  é�  zSet[int]ÚSTATIC_ANCHOR_OFFSETSc                  ó  — e Zd ZU dZdZded<   dZded<   dZded<   dZded	<   dZ	ded
<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dS )ÚVitalsFingerprintuO   Ä�áº·c trÆ°ng phÃ¢n tÃ­ch tráº¡ng thÃ¡i sinh má»‡nh (Vitals) cá»§a nhÃ¢n váº­t.FÚboolÚis_cir   ÚintÚcur_hpÚmax_hpÚcur_esÚmax_esÚcur_wardÚmax_wardÚcur_manaÚmax_manaÚ
cur_spiritÚ
max_spiritÚis_marker_778é   Ú	es_offseté    Úward_offseté   Úmana_offsetéL  Úspirit_offsetÚ ÚstrÚ
diagnosticN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   Ú__annotations__r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r0   r2   r4   r6   r9   © ó    úBC:\Projects\AutoPOE2\src\assistant_tool\zero_day_mem_calibrator.pyr    r    1   s)  € € € € € € àYÐYØ€EÐÐÐÑØ€F€O€O€O�OØ€F€O€O€O�OØ€F€O€O€O�OØ€F€O€O€O�OØ€HÐÐÐÑØ€HÐÐÐÑØ€HÐÐÐÑØ€HÐÐÐÑØ€JÐÐÐÑØ€JÐÐÐÑØ€MÐÐÐÑØ€IÐÐÐÑØ€KÐÐÐÑØ€KÐÐÐÑØ€MÐÐÐÑØ€JÐÐÐÑÐÐr@   r    c                  óJ   — e Zd ZU dZded<   ded<   ded<   ded<   dZded	<   d
S )ÚAobPatternDefu5   Ä�á»‹nh nghÄ©a chá»¯ kÃ½ AOB cáº§n quÃ©t trÃªn .text.r8   ÚnameÚpatternr#   Ú
rip_offsetÚtarget_kindr   ÚlengthN)r:   r;   r<   r=   r>   rH   r?   r@   rA   rC   rC   G   sJ   € € € € € € à?Ð?Ø€I€I�IØ€L€L�LØ€O€O�OØÐÐÑØ€F€O€O€O�O€O€Or@   rC   c                  óJ  — e Zd ZU dZded<   ded<   ded<   ded<   ded	<    ee¬
¦  «        Zded<    ee¬
¦  «        Zded<    ee	¬
¦  «        Z
ded<   dZded<   dZded<   dZded<   dZded<    ee¬
¦  «        Zded<    ee¬
¦  «        Zded<    ee¬
¦  «        Zded<   dS )ÚCalibrationResultu/   Káº¿t quáº£ hiá»‡u chuáº©n bá»™ nhá»› Zero-Day.r!   Úsuccessr8   Úbuild_idr#   Útime_date_stampÚsection_layout_hashÚfile_sha256)Údefault_factoryú	List[int]Ústatic_rootszList[Dict[str, Any]]Úaob_patternszDict[str, int]ÚoffsetsFÚstatic_anchor_strippedNzOptional[VitalsFingerprint]ÚvitalsÚgate2_passedç        ÚfloatÚelapsed_secz	List[str]Úwritten_filesÚdiagnosticsÚerrors)r:   r;   r<   r=   r>   r   ÚlistrR   rS   ÚdictrT   rU   rV   rW   rZ   r[   r\   r]   r?   r@   rA   rJ   rJ   Q   sG  € € € € € € à9Ð9Ø€M€M�MØ€M€M�MØÐÐÑØÐÐÑØÐÐÑØ#˜e°DÐ9Ñ9Ô9€LÐ9Ð9Ð9Ñ9Ø).¨¸tÐ)DÑ)DÔ)D€LÐDÐDÐDÑDØ#˜e°DÐ9Ñ9Ô9€GÐ9Ð9Ð9Ñ9Ø#(ÐÐ(Ð(Ð(Ñ(Ø*.€FÐ.Ð.Ð.Ñ.Ø€LÐÐÐÑØ€KÐÐÐÑØ$˜u°TÐ:Ñ:Ô:€MÐ:Ð:Ð:Ñ:Ø"˜U°4Ð8Ñ8Ô8€KÐ8Ð8Ð8Ñ8Ø˜¨dÐ3Ñ3Ô3€FÐ3Ð3Ð3Ñ3Ð3Ð3r@   rJ   c            	      ó:  — e Zd ZU dZ edddd¬¦  «         edddd¬¦  «         ed	d
dd	¬¦  «         edddd¬¦  «        gZded<   d9d:d„Zd9d;d„Ze	d<d„¦   «         Z
e	d=d „¦   «         Ze	d>d&„¦   «         Ze	d?d)„¦   «         Ze	d@d,„¦   «         ZdAd/„Z	 	 	 	 	 dBdCd8„ZdS )DÚZeroDayMemoryCalibratoruO   Bá»™ hiá»‡u chuáº©n bá»™ nhá»› tá»± Ä‘á»™ng Zero-Day sau báº£n vÃ¡ client POE2.ÚInGameStatezF0 48 01 1D ? ? ? ? 4C 8D 04 07é   )rD   rE   rF   rG   ÚCameraWorldToScreenzF3 0F 59 05 ? ? ? ? 0F 28 CBÚCameraÚLocalPlayerz148 8D 05 ? ? ? ? 48 89 01 48 C7 41 08 00 00 00 00é   ÚGameControllerz'48 8B 05 ? ? ? ? 48 85 C0 74 ? 48 8B 48zList[AobPatternDef]ÚKNOWN_SIGNATURESNÚ	repo_rootúOptional[Path]c                óH   — |pt           | _        t          ¦   «         | _        d S ©N)Ú	REPO_ROOTrj   r   Úgate)Úselfrj   s     rA   Ú__init__z ZeroDayMemoryCalibrator.__init__ƒ   s   € Ø"Ð/¥iˆŒÝ(Ñ*Ô*ˆŒ	ˆ	ˆ	r@   Úexe_pathÚreturnúOptional[Any]c                ó  — |}|€t           �t          j        ¦   «         }|�!t          |¦  «                             ¦   «         sdS t           €t	          d¦  «        ‚t          j        t          |¦  «        ¦  «        }|j        r|ndS )uH   TrÃ­ch xuáº¥t PE fingerprint trá»±c tiáº¿p tá»« Ä‘Ä©a theo INV-BUILD-01.Nu;   Module tools/re_pipeline/fingerprint.py khÃ´ng kháº£ dá»¥ng)ÚfpÚlocate_poe2_executabler   Úis_fileÚRuntimeErrorÚload_pe_headers_with_hashÚvalid)rp   rr   Ú
target_exeÚbuilds       rA   Úextract_pe_fingerprintz.ZeroDayMemoryCalibrator.extract_pe_fingerprintŠ   s€   € àˆ
ØÐ¥" .ÝÔ2Ñ4Ô4ˆJàÐ¥T¨*Ñ%5Ô%5×%=Ò%=Ñ%?Ô%?ÐØ�4åˆ:ÝÐ\Ñ]Ô]Ð]åÔ,­T°*Ñ-=Ô-=Ñ>Ô>ˆØœÐ-ˆuˆu¨Ð-r@   Úpattern_strr8   úList[Optional[int]]c                óê   — |                       ¦   «                              ¦   «         }g }|D ]G}|dk    s|dk    r|                     d¦  «         Œ$|                     t          |d¦  «        ¦  «         ŒH|S )uB   Chuyá»ƒn chuá»—i pattern '48 8B 05 ? ? ? ?' thÃ nh list byte/None.ú?z??Né   )ÚstripÚsplitÚappendr#   )r   ÚtokensÚresÚts       rA   Úparse_patternz%ZeroDayMemoryCalibrator.parse_patternœ   s}   € ð ×"Ò"Ñ$Ô$×*Ò*Ñ,Ô,ˆØ#%ˆØð 	'ð 	'ˆAØ�CŠxˆx˜1 š9˜9Ø—
’
˜4Ñ Ô Ð Ð à—
’
�3˜q "™:œ:Ñ&Ô&Ð&Ð&Øˆ
r@   ÚhaystackÚbytesrE   rQ   c                óî  — |sg S t          d„ t          |¦  «        D ¦   «         d¦  «        }|€g S t          ||         g¦  «        }||dz   d…         }|}g }d}t          | ¦  «        }t          |¦  «        }		 |                      ||¦  «        }
|
dk     rn`|
|z
  }|dk    rO||	z   |k    rFd}t          |¦  «        D ]\  }}|�| |
dz   |z            |k    rd} nŒ|r|                     |¦  «         |
dz   }Œ}|S )uS   QuÃ©t tÃ¬m má»�i vá»‹ trÃ­ khá»›p pattern trong byte buffer. DÃ¹ng neo byte Ä‘áº§u.c              3  ó$   K  — | ]\  }}|®|V — Œd S rm   r?   )Ú.0ÚiÚbs      rA   ú	<genexpr>z=ZeroDayMemoryCalibrator.scan_pattern_bytes.<locals>.<genexpr>­   s&   è è € ÐMÐM¡  A¸q¸}˜1¸}¸}¸}¸}ÐMÐMr@   Né   r   TF)ÚnextÚ	enumeraterŒ   ÚlenÚfindr†   )r‹   rE   Ú
anchor_idxÚanchor_byteÚtailÚneed_beforeÚmatchesÚstartÚtotalÚpat_lenÚfoundÚmatch_startÚokÚoffsetÚexps                  rA   Úscan_pattern_bytesz*ZeroDayMemoryCalibrator.scan_pattern_bytes¨   sM  € ð ð 	ØˆIÝÐMÐM­°7Ñ);Ô);ÐMÑMÔMÈtÑTÔTˆ
ØÐØˆIå˜W ZÔ0Ð1Ñ2Ô2ˆØ�z A‘~Ð'Ð'Ô(ˆØ ˆØˆàˆÝ�H‘”ˆÝ�g‘,”,ˆð	Ø—M’M +¨uÑ5Ô5ˆEØ�qŠyˆyØØ +Ñ-ˆKØ˜aÒÐ K°'Ñ$9¸UÒ$BÐ$BØ�Ý#,¨T¡?¤?ð ð ‘K�F˜CØ�¨8°E¸A±IÀÑ4FÔ+GÈ3Ò+NÐ+NØ"˜Ø˜øØð 0Ø—N’N ;Ñ/Ô/Ð/Ø˜A‘IˆEð	ð ˆr@   Úmatch_offsetr#   rF   Útext_rawÚtext_vac                óŒ   — | |z   }|dz   t          |¦  «        k    rdS t          j        d||¦  «        \  }|| z   |z   dz   }||z   S )uE   Giáº£i mÃ£ lá»‡nh RIP-relative Ä‘á»ƒ tÃ­nh RVA cá»§a Ã´ nhá»› Ä‘Ã­ch.rc   r   z<i)r–   ÚstructÚunpack_from)r¦   rF   r§   r¨   Údisp_posÚdisp32Únext_ip_rvas          rA   Úresolve_rip_rvaz'ZeroDayMemoryCalibrator.resolve_rip_rvaË   s]   € ð   *Ñ,ˆØ�a‰<�#˜h™-œ-Ò'Ð'Ø�1ÝÔ& t¨X°xÑ@Ô@‰	ˆØ Ñ,¨zÑ9¸AÑ=ˆØ˜VÑ#Ð#r@   Úcandidate_pos_offsetúTuple[int, bool]c                ó,   — | t           v s| dk    rdS | dfS )uê   Tá»« chá»‘i vÃ  loáº¡i bá»� neo tÄ©nh 0x290 / 0x540 / 0x120.
        
        Tráº£ vá»� (sanitized_offset, was_stripped).
        Náº¿u lÃ  neo tÄ©nh, báº¯t buá»™c tráº£ vá»� (0x0, True) Ä‘á»ƒ kÃ­ch hoáº¡t PlayerFinder 16MB.
        r   )r   TF)r   )r°   s    rA   Úsanitize_pos_offsetz+ZeroDayMemoryCalibrator.sanitize_pos_offsetØ   s,   € ð  Õ#8Ð8Ð8Ð<PÐTUÒ<UÐ<UØ�7Ø# UÐ*Ð*r@   Úlife_bufr    c                ót  — t          ¦   «         }t          | ¦  «        dk     rdt          | ¦  «        › d�|_        |S t          j        d| d¦  «        \  }}t          j        d| d¦  «        \  }}t          j        d| d¦  «        \  }}t          j        d| d¦  «        \  }}	t          j        d| d	¦  «        \  }
}||c|_        |_        ||c|_        |_        ||c|_	        |_
        ||	c|_        |_        |
|c|_        |_        t          |¦  «        t          |¦  «        }}|d
k    s0|d
k    s*|                     d¦  «        s|                     d¦  «        rd|_        d|› d|› d�|_        |S |dk    r"|dk    rd|_        d|› d|› d|› d|› d�	|_        n!d|_        d|› d|› d|› d|› d|› d|	› d�|_        |S )u  PhÃ¢n tÃ­ch cáº¥u trÃºc LifeComponent trong bá»™ nhá»›:
        - PhÃ¡t hiá»‡n vÃ  khÃ¡ng triá»‡t Ä‘á»ƒ UI Marker 778/779.
        - Nháº­n diá»‡n chÃ­nh xÃ¡c CI (HP 1/1).
        - Ä�á»�c tÃ¡ch rá»�i Energy Shield (+0xC), Ward (+0x20), Mana (+0x420), Spirit (+0x44C).
        iT  u   Life buffer quÃ¡ ngáº¯n (z < 1108 bytes)z<IIr   r/   r1   r3   r5   i
  )Ú778Ú779Ú7793Tu    PhÃ¡t hiá»‡n UI Marker 778/779 (ú/u   )! KhÃ´ng pháº£i mÃ¡u player.r“   u1   Nháº­n diá»‡n CI (Chaos Inoculation): HP 1/1, ES z, Ward ú.Fu   Vitals chuáº©n: HP z, ES z, Mana )r    r–   r9   rª   r«   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r8   Ú
startswithr.   r"   )r´   rˆ   Úhp_curÚhp_maxÚes_curÚes_maxÚward_curÚward_maxÚmana_curÚmana_maxÚ
spirit_curÚ
spirit_maxÚs_curÚs_maxs                 rA   Úevaluate_vitals_bufferz.ZeroDayMemoryCalibrator.evaluate_vitals_bufferæ   s  € õ  Ñ!Ô!ˆÝˆx‰=Œ=˜5Ò Ð ØV½¸X¹¼ÐVÐVÐVˆCŒNØˆJåÔ+¨E°8¸SÑAÔA‰ˆ�ÝÔ+¨E°8¸SÑAÔA‰ˆ�Ý#Ô/°°xÀÑFÔFÑˆ�(Ý#Ô/°°xÀÑGÔGÑˆ�(Ý!'Ô!3°E¸8ÀUÑ!KÔ!KÑˆ
�Jà!'¨ÐˆŒ
�C”JØ!'¨ÐˆŒ
�C”JØ%-¨xÐ"ˆŒ�c”lØ%-¨xÐ"ˆŒ�c”lØ)3°ZÐ&ˆŒ˜œõ ˜6‘{”{¥C¨¡K¤Kˆuˆà�cŠMˆM˜V sš]˜]Ø×ÒÐ 6Ñ7Ô7ð +à×ÒÐ 6Ñ7Ô7ð +ð !%ˆCÔØnÀÐnÐnÈÐnÐnÐnˆCŒNØˆJð �QŠ;ˆ;˜6 Qš;˜;ØˆCŒIØÐQWÐÐÐZ`ÐÐÐiqÐÐÐt|ÐÐÐˆCŒNˆNàˆCŒIØw°6ÐwÐw¸FÐwÐwÈÐwÐwÐRXÐwÐwÐaiÐwÐwÐltÐwÐwÐwˆCŒNàˆ
r@   ÚcalibrJ   c                óÌ  — dd|j         › �d|j        d›�d|j        d›�d|j        › �dt	          j        ¦   «                              d	¦  «        › �d
dddd|j        d›�d|j        d›�dg}g d¢}t          |j        dd…         d¬¦  «        D ]F\  }}|t          |¦  «        k    rd||dz
           › �nd}| 
                    d|› d|d›|› �¦  «         ŒG|j        r| 
                    d¦  «         t          |j                             ¦   «         ¦  «        D ]*\  }}|t          v rŒ| 
                    |› d|d›�¦  «         Œ+| 
                    d¦  «         t          |j        dd…         d¬¦  «        D ]G\  }}	| 
                    d|› d|	d         › �¦  «         | 
                    d|› d|	d         › �¦  «         ŒHd                     |¦  «                             ¦   «         dz   S )u=   Táº¡o ná»™i dung TOML tÆ°Æ¡ng thÃ­ch 100% C++ OffsetRegistry.zD# AutoPOE2 offsets cache - auto-generated by ZeroDayMemoryCalibratorz# build_id                 = z# build_time_date_stamp    = 0xÚ08Xz# build_section_layout_hash= 0xÚ016Xz# binary_sha256            = z# generated_at             = z%d/%m/%Y %H:%M:%Sz@# INV-BUILD-01: Bat buoc phai khop ca 2 ma fingerprint duoi day.z<# INV-OFFSET-01: Khong co bat ky dia chi heap tuyet doi nao.zP# INV-MEM-DYNAMIC-XYZ: Loai bo neo tinh 0x290/0x540/0x120, ep PlayerFinder 16MB.r7   zbuild_time_date_stamp = 0xzbuild_section_layout_hash = 0x)rb   ÚPlayerÚ	EntityMapÚTerrainOriginre   ÚVitalsÚ
ActionDataÚUIComponentNrƒ   r“   )r�   z # Ústatic_root_z = 0xÚXÚaob_pattern_z = rE   Úaob_rip_offset_rF   ú
)rL   rM   rN   rO   r   ÚnowÚstrftimer•   rR   r–   r†   ÚsortedrT   Úitemsr   rS   ÚjoinÚrstrip)
rp   rÉ   ÚlinesÚroot_labelsÚidxÚrvaÚlabelÚkÚvÚps
             rA   Úgenerate_tomlz%ZeroDayMemoryCalibrator.generate_toml  sn  € ð SØ<¨E¬NÐ<Ð<ØI¨eÔ.CÐIÐIÐIØN¨eÔ.GÐNÐNÐNØ?¨EÔ,=Ð?Ð?ØZ­H¬L©N¬N×,CÒ,CÐDWÑ,XÔ,XÐZÐZØNØJØ^ØØD¨Ô)>ÐDÐDÐDØM¨UÔ-FÐMÐMÐMØð
ˆð"
ð 
ð 
ˆõ " %Ô"4°S°b°SÔ"9ÀÐCÑCÔCð 	Bð 	B‰HˆC�Ø47½3¸{Ñ;KÔ;KÒ4KÐ4KÐ0˜+ c¨A¡gÔ.Ð0Ð0Ð0ÐQSˆEØ�LŠLÐ@¨Ð@Ð@°#Ð@Ð@¸Ð@Ð@ÑAÔAÐAÐAØÔð 	Ø�LŠL˜ÑÔÐõ ˜5œ=×.Ò.Ñ0Ô0Ñ1Ô1ð 	+ð 	+‰DˆAˆqØÕ+Ð+Ð+ØØ�LŠL˜AÐ)Ð) AÐ)Ð)Ð)Ñ*Ô*Ð*Ð*Ø�Š�RÑÔÐõ   Ô 2°3°B°3Ô 7¸qÐAÑAÔAð 	Fð 	F‰FˆC�Ø�LŠLÐ>¨Ð>Ð>°°)´Ð>Ð>Ñ?Ô?Ð?Ø�LŠLÐD¨3ÐDÐD°1°\´?ÐDÐDÑEÔEÐEÐEà�yŠy˜ÑÔ×&Ò&Ñ(Ô(¨4Ñ/Ð/r@   FúOptional[str]Údry_runr!   Ú
mock_buildÚmock_text_bytesúOptional[bytes]Úmock_life_bytesc                óÆ  ‡,— t          j         ¦   «         }g }g }|p%|                      |rt          |¦  «        nd¦  «        }	|	�t          |	dd¦  «        �sE| j        dz  dz  }
t          |
                     d¦  «        t          j        j	        d¬¦  «        }|rµd	dl
}|                     |d	                              d
¬¦  «        ¦  «        }t          |d         d¦  «        }t          |d         d¦  «        }|                     dd¦  «        }|                     d|d›¦  «        }|                     d|d	         j        › d|› d�¦  «         n–|                     d¦  «         t#          ddd	d	dt%          t          j         ¦   «         |z
  d¦  «        |¬¦  «        S |	j        }|	j        }|	                     ¦   «         }|	j        }|                     d|› d|d›d|d›�¦  «         g }g }|}d}|€î|rìt          j                             |¦  «        rÍ|	rËt1          |	d¦  «        r|	                     d ¦  «        nd}|r¢	 t5          |d!¦  «        5 }|                     |j        ¦  «         |                     t=          |j        d"¦  «        ¦  «        }|j         }ddd¦  «         n# 1 swxY w Y   n/# tB          $ r"}|                     d#|› �¦  «         Y d}~nd}~ww xY w|rû| j"        D ]ó}|  #                    |j$        ¦  «        }|  %                    ||¦  «        }tM          |¦  «        d$k    rm|  '                    |d	         |j(        ||¦  «        }|d	k    rC|                     |¦  «         |                     |j        |j$        |j(        d%|d&›�dd'œ¦  «         Œ²tM          |¦  «        d$k    r.|                     d(|j        › d)tM          |¦  «        › d*�¦  «         Œôd+}|	r.t1          |	d¦  «        r|	                     d,¦  «        }|r|j         }|d+z
  Š,|sM|d-k    rg d.¢}ng d/¢}ˆ,fd0„|D ¦   «         }|                     d1tM          |¦  «        › d2‰,d3›d4‰,d&›d5|› �¦  «         d6} |  )                    | ¦  «        \  }!}"|"r|                     d7¦  «         |d8v rd9nd:d;d<|!d=d>d?d@dAœ}#d}$|r2|  *                    |¦  «        }$|                     dB|$j+        › �¦  «         | j,         -                    dCdDdEddddF¬G¦  «        }%|%j.        j/        dHk    }&|&s|                     dI|%j0        › �¦  «         n|                     dJ¦  «         t%          t          j         ¦   «         |z
  d¦  «        }'t#          tM          |¦  «        d	k    |||||||#|"|$|&|'||¬K¦  «        }(|sÑ|(j1        rÊ|  2                    |(¦  «        })| j        dLz  dMz  dN|› dO�z  | j        dLz  dMz  dPz  | j        dLz  dPz  g}*|*D ]\}+|+j3         4                    dd¬Q¦  «         |+ 5                    |)d
¬¦  «         |(j6                             to          |+¦  «        ¦  «         Œ]|                     dRtM          |*¦  «        › dS�¦  «         |(S )TuD   Thá»±c thi toÃ n bá»™ quy trÃ¬nh hiá»‡u chuáº©n bá»™ nhá»› Zero-Day.Nr{   FÚdataÚbuildsz*.jsonT)ÚkeyÚreverser   zutf-8)ÚencodingrM   rƒ   rN   rO   r7   rL   rË   u'   Sá»­ dá»¥ng build record gáº§n nháº¥t: z (ú)u=   KhÃ´ng thá»ƒ trÃ­ch xuáº¥t PE fingerprint tá»« client binary!ÚUNKNOWNrg   )rK   rL   rM   rN   rO   rZ   r]   u"   Fingerprint thÃ nh cÃ´ng: BuildId=z
, Stamp=0xz	, Hash=0xrÌ   i   Úfind_sectionz.textÚrbi   u-   KhÃ´ng Ä‘á»�c Ä‘Æ°á»£c raw .text tá»« Ä‘Ä©a: r“   Ú0xrÔ   )rD   rE   rF   Ú
target_rvaÚuniquezAOB 'u   ' trÃ¹ng láº·p u$    láº§n (INV-SIG-UNIQUE loáº¡i bá»�).i @ z.dataÚ6A9E477A)i�œ\i ð\i•‡Xih€ ið°\iH²\iœY\i¤¯\)iàÏ\iØÏ\i A]iØ=]iø@]i€hqi�_Ci˜_Cc                ó   •— g | ]}|‰z   ‘ŒS r?   r?   )r�   ÚrÚ
data_shifts     €rA   ú
<listcomp>z;ZeroDayMemoryCalibrator.run_calibration.<locals>.<listcomp>¤  s   ø€ ÐGÐGÐG°1  J¡ÐGÐGÐGr@   u   Náº¡p z static roots (.data shift: z+dz / 0xz) cho build r   uo   INV-MEM-DYNAMIC-XYZ: Ä�Ã£ loáº¡i bá»� neo tÄ©nh (0x290/0x540/0x120), gÃ¡n pos_offset=0x0 Ã©p PlayerFinder 16MB.)Ú6AA2213CÚ6AAB2A74i  iè  ià  iØ  r/   r1   r3   r5   )Úentity_map_offsetÚplayer_offsetÚstat_offsetÚ
pos_offsetÚenergy_shield_offsetr2   r4   r6   zVitals Audit: g     Àb@g     @o@rX   g      ø?)Úpos_xÚpos_yÚpos_zÚstatic_offset_detectedÚplayer_finder_16mb_activeÚ	is_movingÚmovement_deltaÚPASSEDu   Gate 2 tháº¥t báº¡i: uK   Gate 2 (INV-MEM-DYNAMIC-XYZ): PASSED - PlayerFinder 16MB vi sai há»£p lá»‡.)rK   rL   rM   rN   rO   rR   rS   rT   rU   rV   rW   rZ   r\   r]   ÚbinÚReleaseÚoffsets_z.tomlzoffsets.toml)ÚparentsÚexist_oku   Ä�Ã£ cáº­p nháº­t u    tá»‡p TOML Offset Registry.)8Útimer~   r   Úgetattrrj   rÚ   ÚglobÚosÚpathÚgetmtimeÚjsonÚloadsÚ	read_textr#   Úgetr†   rD   rJ   ÚroundÚshort_idrM   rN   rO   ÚisfileÚhasattrrõ   ÚopenÚseekÚraw_pointerÚreadÚminÚraw_sizeÚvirtual_addressÚ	Exceptionri   rŠ   rE   r¥   r–   r¯   rF   r³   rÈ   r9   ro   Úcheck_gate2_memory_driftÚstatusÚvalueÚmessagerK   ræ   ÚparentÚmkdirÚ
write_textr[   r8   )-rp   rr   rè   ré   rê   rì   Út0r\   r]   r}   Ú
builds_dirÚ
candidatesr  ÚrecÚstampÚlhashÚshaÚbidrR   Úaob_resultsÚ
text_bytesr¨   Útext_secÚfÚexcÚpat_defÚparsedrœ   rá   Údata_vaÚdata_secÚbase_roots_6aaÚraw_pos_offsetr  ÚstrippedrT   Ú
vitals_resÚg2Úgate2_okÚelapsedrÉ   Ú	toml_textÚtargetsrå   rý   s-                                               @rA   Úrun_calibrationz'ZeroDayMemoryCalibrator.run_calibrationD  s,  ø€ õ ŒY‰[Œ[ˆØ!#ˆØˆð Ð_˜d×9Ò9ÈHÐ:^½$¸x¹.¼.¸.ÐZ^Ñ_Ô_ˆØˆ=¥¨¨w¸Ñ >Ô >‰=àœ¨&Ñ0°8Ñ;ˆJÝ 
§¢°Ñ 9Ô 9½r¼wÔ?OÐY]Ð^Ñ^Ô^ˆJØð Ø���Ø—j’j ¨A¤×!8Ò!8À'Ð!8Ñ!JÔ!JÑKÔK�Ý˜CÐ 1Ô2°BÑ7Ô7�Ý˜CÐ 5Ô6¸Ñ;Ô;�Ø—g’g˜m¨RÑ0Ô0�Ø—g’g˜j¨U¨.¨.Ñ9Ô9�Ø×"Ò"Ð#iÈZÐXYÌ]ÔM_Ð#iÐ#iÐcfÐ#iÐ#iÐ#iÑjÔjÐjÐjà—’Ð]Ñ^Ô^Ð^Ý(Ø!Ø&Ø$%Ø()Ø "Ý %¥d¤i¡k¤k°BÑ&6¸Ñ :Ô :Ø!ðñ ô ð ð ”.ˆCØÔ)ˆEØ×-Ò-Ñ/Ô/ˆEØÔ#ˆCØ×ÒÐsÀCÐsÐsÐSXÐsÐsÐsÐglÐsÐsÐsÑtÔtÐtð #%ˆØ,.ˆð %ˆ
ØˆØÐ (Ð­r¬w¯~ª~¸hÑ/GÔ/GÐÈEÐÝ6=¸eÀ^Ñ6TÔ6TÐ^�u×)Ò)¨'Ñ2Ô2Ð2ÐZ^ˆHØð ^ð^Ý˜h¨Ñ-Ô-ð ;°ØŸš˜xÔ3Ñ4Ô4Ð4Ø%&§V¢V­C°Ô0AÐCSÑ,TÔ,TÑ%UÔ%U˜
Ø"*Ô":˜ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;øøõ !ð ^ð ^ð ^Ø×&Ò&Ð'\ÐWZÐ'\Ð'\Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]øøøøð^øøøð ð 	@ØÔ0ð @ð @�Ø×+Ò+¨G¬OÑ<Ô<�Ø×1Ò1°*¸fÑEÔE�Ý�w‘<”< 1Ò$Ð$Ø×.Ò.¨w°q¬z¸7Ô;MÈzÐ[bÑcÔc�CØ˜Q’w�wØ$×+Ò+¨CÑ0Ô0Ð0Ø#×*Ò*Ø$+¤LØ'.¤Ø*1Ô*<Ø*6¨s¨,¨,¨,Ø&*ð,ð ,ñ ô ð øõ ˜‘\”\ AÒ%Ð%Ø×&Ò&Ð'~¨w¬|Ð'~Ð'~ÍCÐPWÉLÌLÐ'~Ð'~Ð'~ÑÔÐøð ˆØð 	3•W˜U NÑ3Ô3ð 	3Ø×)Ò)¨'Ñ2Ô2ˆHØð 3Ø"Ô2�ð ˜yÑ(ˆ
àð 	LØ�jÒ Ð ØwÐwÐw��à!yÐ!yÐ!y�ØGÐGÐGÐG¸ÐGÑGÔG�Ø×Òð   K­¨LÑ(9Ô(9ð   Kð   KÐWað   Kð   Kð   KÐkuð   Kð   Kð   Kð  FIð   Kð   Kñ  Lô  Lð  Lð ˆØ#×7Ò7¸ÑGÔGÑˆ
�HØð 	RØ×Òð   Qñ  Rô  Rð  Rð +.Ð1IÐ*IÐ*I  ÈuØ"Ø Ø$Ø$'ØØ Ø"ð	#
ð 	#
ˆð 37ˆ
Øð 	IØ×4Ò4°_ÑEÔEˆJØ×ÒÐG°
Ô0EÐGÐGÑHÔHÐHð ŒY×/Ò/ØØØØ#(Ø&*ØØð 0ñ 
ô 
ˆð ”I”O xÒ/ˆØð 	nØ�MŠMÐ>°"´*Ð>Ð>Ñ?Ô?Ð?Ð?à×ÒÐlÑmÔmÐmå�œ	™œ bÑ(¨!Ñ,Ô,ˆå!Ý˜‘[”[ AÒ%ØØ!Ø %ØØ%Ø$ØØ#+ØØ!ØØ#Øð
ñ 
ô 
ˆð$ ð 	`˜5œ=ð 	`Ø×*Ò*¨5Ñ1Ô1ˆIà” Ñ&¨Ñ2Ð5JÀÐ5JÐ5JÐ5JÑJØ” Ñ&¨Ñ2°^ÑCØ” Ñ&¨Ñ7ðˆGð
 ð 3ð 3�Ø”—’ t°d�Ñ;Ô;Ð;Ø—’˜Y°�Ñ9Ô9Ð9ØÔ#×*Ò*­3¨q©6¬6Ñ2Ô2Ð2Ð2Ø×ÒÐ^µC¸±L´LÐ^Ð^Ð^Ñ_Ô_Ð_àˆs=   È:J, É
A
J ÊJ, Ê J$Ê$J, Ê'J$Ê(J, Ê,
KÊ6KËKrm   )rj   rk   )rr   rk   rs   rt   )r   r8   rs   r€   )r‹   rŒ   rE   r€   rs   rQ   )
r¦   r#   rF   r#   r§   rŒ   r¨   r#   rs   r#   )r°   r#   rs   r±   )r´   rŒ   rs   r    )rÉ   rJ   rs   r8   )NFNNN)rr   rç   rè   r!   ré   rt   rê   rë   rì   rë   rs   rJ   )r:   r;   r<   r=   rC   ri   r>   rq   r~   ÚstaticmethodrŠ   r¥   r¯   r³   rÈ   ræ   rJ  r?   r@   rA   ra   ra   e   sÚ  € € € € € € ØYÐYð 	ˆØØ5ØØ%ð		
ñ 	
ô 	
ð 	ˆØ&Ø2ØØ ð		
ñ 	
ô 	
ð 	ˆØØGØØ%ð		
ñ 	
ô 	
ð 	ˆØ!Ø=ØØ(ð		
ñ 	
ô 	
ð'-Ðð ð ð ñ ð6+ð +ð +ð +ð +ð.ð .ð .ð .ð .ð$ ð	ð 	ð 	ñ „\ð	ð ð ð  ð  ñ „\ð ðD ð$ð $ð $ñ „\ð$ð ð+ð +ð +ñ „\ð+ð ð*ð *ð *ñ „\ð*ð^)0ð )0ð )0ð )0ð` #'ØØ$(Ø+/Ø+/ðkð kð kð kð kð kð kr@   ra   )'r=   Ú
__future__r   r  rª   Úsysr  Údataclassesr   r   r   Úpathlibr   Útypingr   r	   r
   r   r   r   Ú__file__Úresolver-  rn   r  Úinsertr8   Úfingerprintrv   ÚImportErrorÚ src.assistant_tool.zero_day_gater   r   r>   r   r    rC   rJ   ra   r?   r@   rA   ú<module>rW     si  ððð ð ð$ #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8àˆD�‰NŒN×"Ò"Ñ$Ô$Ô+Ô2Ô9€	Ø „‡‚��3�3�y 7Ñ*¨]Ñ:Ñ;Ô;Ñ <Ô <Ð <ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð BÐ AÐ AÐ AÐ AÐ Að%ð %ð %Ð ð ð ð ñ ð #8Ð"7Ð"7Ð Ð 7Ð 7Ð 7Ñ 7ð ðð ð ð ð ñ ô ñ „ðð* ðð ð ð ð ñ ô ñ „ðð ð4ð 4ð 4ð 4ð 4ñ 4ô 4ñ „ð4ð&Jð Jð Jð Jð Jñ Jô Jð Jð Jð Js   ÂB ÂB$Â#B$