一个苛刻的俄罗斯工程师的故事。
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" , , . : " ?" " ?"
, — 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 La Vie,这是许可协议。
希望即使您是一名设计工程师,并且与逆向工程相距甚远,这篇文章也可以激励某人改进工作工具。