Ce dont nous avons besoin pour construire un patch, nous allons dessiner nous allons vivre

Une histoire d'ingénieurs russes durs.



1. Comment tout a commencé ...



Des anges et des démons encerclés au-dessus de moi

Couper les épines et la Voie lactée


Origa - Univers intérieur

Dans une CAO, pas très domestique, il est possible de convertir des dessins directement en PDF. Mais soit les programmeurs ne comprennent pas vraiment comment leur CAO est utilisé, soit ils ont simplement oublié d'ajouter la possibilité d'enregistrer les paramètres. Par conséquent, la CAO, lors de l'exportation au format PDF, ne convertit toujours que la "feuille courante", sauf si vous entrez dans les paramètres et sélectionnez de force "Toutes les feuilles". Dans notre activité d'ingénierie, les documents à une seule feuille sont extrêmement rares, les gens souffrent et continuent de télécharger, d'envoyer, de générer et de gaspiller de temps en temps la puissance du processeur sur des PDF à une seule feuille. Un vendredi soir languissantsiroter du whisky mélangé et fumer un cigare, Me suis-je demandé - pouvez-vous faire quelque chose à ce sujet?



Avertissement
  • , . . .
  • , - , \ . - , .






Figure 1. Fenêtre des paramètres PDF.



2. ... et comment cela aurait pu se terminer



— . , . , , PDF .



, — . HKEY_LOCAL_MACHINE\SOFTWARE\ ( HKEY_CURRENT_USER) , . . , , - , .



— . , config.ini, settings.xml . .



3. Just Do It!



-

-


— -

, IT-. , . , " ", . , "Options", "1,1,2,3,1,0,1" , , . : " ?" " ?"



, — Sysinternals — Process Monitor(procmon).





2. Process Monitor



, , .. Procmon , windows - , 10-20 . , — . , , , "", … — "" 700+ . . , 19:46:29,4265774, — ( ) 1391,790…1,0,0.



"! !" — , , 1 0 , .

"!" — , , - , , .



. . — .



, , , , - , … , — " …". , , , . .



, , 20 000? , ( , ), , . , , (10^9)…



. " ". , . . … … "DPI". , , "400 DPI" ( ). . () - , …



TotalCommader > > *.* c "400 DPI". … . , , , , HEX- (, ). — :

imgUI.dll ( )

! ? . DLL — , , -:





3. DLL



--… , imgUI.dll img.dll imgUtils.dll. -- . , , , Rusians (, s) — imgRes.dll imgUIRes.dll. :



  • imgUI.dll — UI, — "User Interface", "400 DPI". — .
  • imgUIRes.dll — ,
  • imgUtils.dll — , pdf, (?)
  • img.dll — , , .
  • imgRes.dll — ??? img.dll ???


4.We need to go deeper ( )



All in all it was just a brick in the wall.

All in all it was just the bricks in the wall.


Pink Floyd — Another Brick In the Wall (Part 2)

.



, : , res-… . ArtMoney Restorator. — res- , , ( ) .



— res- ( ++- ).



imgRes.dll , imgUIRes.dll .



! — , — … … - … … , , ?

. Res- , , , , , — ! — " " , !



, , .



>>>OK>. . "-" , .





4. .



. -, -, , . ( , ). -, ID , . ( — ID):





5. ID Res-.



, - , , " ", .



— , ? , , , , - .



5.!



Run rabbit run

Dig that hole, forget the sun,

And when at last the work is done

Don't sit down it's time to dig another one


Pink Floyd — Breathe

10 , , - , - , . , , - DES, AES , — , . , . - HEX, ASM, IDA.



, (freeware, ). Ollydbg , .. 64 . Microsoft Debugger — , IDA .



, :



  • ID ( 1001 1014)
  • "400 DPI"


… , , imgUI.dll. ? -, "400 DPI" , -, .

DLL IDA , , 302A79452F5C:





6. IDA.



? , 1. 2. -, - -. "TextView" , — , 800+ sub_18…, , , — ?, , !?



, , - (PowerShell VBA), , , , .



, — " , ". — radiobutton ID 1004\1005. …-- . , IDA . , , " " 1004 3ECh HEX (h ). — , 3 2 . , ID 1005 (3EDh) . :





7. ID 1005



, … , , . , " " " ", " ", " ". — IDA . - . , — "" , — . , -. , , ( ), "" - . mov edx, 3EC - :



BA EC 03 00 0  


mov edx, 3ED :



BA ED 03 00 00


, , EC ED ! DLL , "", , … > … !!! PDF-, … ! ! , !



, , , , . , , , .



6. Hardcore hardcore



, ,

.

— , , , — .

, , — "", , PDF 1 . .. — PDF', , .





8.



? , !



"just for fun" imgUtils.dll. , imgUI.dll, — : OptionsPDFExport::SetResol, OptionsPDFExport::SetBW, OptionsPDFExport::GetStartSheet . ! ! , .. - :



mov     [rcx+15h], dl  
Retn


.. , DL rcx ( ?) … dl? rcx? , - GetBW rcx+15h 1 ( 0, )?



— . . . — ( ) , 99 , , 100 , .. … . (, , ).



mov rcx+15h, dl. - :



88 51 14


mov rcx+15h, 1, :



C7 81 14 00 00 00 01 00 00 00


.. 14 . ( — -- -, 86-64, ).



. - .



, … . .



? - ? , . — - PDF .



API Monitor v2. "" imgUtils.dll imgUI.dll… , 233 . , .



GetBW\SetBW\GetStartSheet , , .. .



- OptionsXPSExport. … , PDF', - ? Get' Set'



. , 300 . — ? ID — , "400 DPI".

400 16- , 190h. … 1 :





9. .



— , ? ! ! , 190h 96h ( 150). > PDF> … 400 DPI 150 DPI. ! — "" . — 300 , .



, ? r12 r13? :





10. R2D2.



r12 , r13 , , .. xor, mov. xor mov, .

, , rbp+330h 0, 32h - 1.

, — (1) (0).



, . " " , — . — .



r13b r12b [rbp+326h], , mov . mov . . . . — .



1 0, . - — , . — , 10-20 -.



— " ? 5 7 ?" , 0FFFFFFh "", "".



— mov rpb+314, r12 . 0, 1! ? , . , 1 0 . , — mov rpb+314 r12 mov rpb+314 r13 … … " " !

, , . 14 .



. 0 — , 1 — , 2.

, — mov rpb+314 r12 mov rpb+314 00002h



, :





11. 24.



.. eax , mov rpb+314 eax mov rpb+314 r12!



-
mov rpb+314, r12 44 89 A5 14 03 00 00
mov rpb+314, eax 89 85 0C 03 00 00


— ? . , :



  • ( )
  • ( )
  • nop —
  • …. , .


— NOP, .. - NOP "90".

… , . PDF. :





11. PDF.



7.



We've come too far to give up who we are

So let's raise the bar and our cups to the stars


Daft Punk — Get Lucky

, , . , . " ", JMP' , , , - .



C'est un peu offensant que ces connaissances n'entrent jamais en "production", et les ingénieurs continueront de souffrir à cause de quelques programmeurs, mais C'est La Vie, c'est l'accord de licence.



Espérons que cet article puisse inspirer quelqu'un à améliorer les outils de travail, même si vous êtes un ingénieur de conception et que vous êtes assez loin de la rétro-ingénierie.




All Articles