我们需要建立一个补丁,我们将画画,我们将生存

一个苛刻的俄罗斯工程师的故事。



1.这一切是如何开始的...



天使和魔鬼在我上方盘旋

割破荆棘和银河


Origa-内宇宙

在一种不是很普通的CAD中,可以将工程图直接转换为PDF。但是,要么程序员真的不了解他们的CAD是如何使用的,要么他们只是忘记了添加保存设置的功能。因此,除非导出到参数并强行选择“所有图纸”,否则CAD在导出为PDF时始终仅转换“当前图纸”。在我们的工程业务中,单页文档非常少见,人们经常遭受折磨,并且会继续上载,发送,生成文档,并浪费处理器的力量,不时在单页PDF上进行。在一个疲惫的星期五晚上blend饮威士忌和抽雪茄,我想知道-您能做些什么吗?



免责声明
  • , . . .
  • , - , \ . - , .






图1. PDF设置窗口。



2. ...以及如何结束



— . , . , , 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" , , . : " ?" " ?"



, — SysinternalsProcess 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 La Vie,这是许可协议。



希望即使您是一名设计工程师,并且与逆向工程相距甚远,这篇文章也可以激励某人改进工作工具。




All Articles