原文 / k8 Y+ Z0 N z
http://code.google.com/p/gdipp/
: g0 X% f# \7 S- w' b- c1 N7 X; s2 H+ D- Q+ J, Y6 S( u
又一个GDI HOOK工具 GDIPP,有源码可以下载。
n5 \" }" Q- Q9 [
! h `: s3 D( `5 ]The gdipp (codename) project is a replacement of the Windows default text render, which brings to you the effect of text like Mac OS and Linux distributions. It is easy to use with unnoticeable overhead, and it is fully customizable. 4 m* _/ t P" r' [8 I" s" `$ n3 H# w
The project is originated as the relaunch of the suspended gdi++.dll project. Like the InkStone project, we found the source code of gdi++.dll project too complex to manage, and decide to start over a new code base. The goal of gdipp project is to continue the development of gdi++, expand functionality, improve performance, provide better compatibility for the current and future Windows versions (potentially at the cost of removing compatibility for old Windows), create detailed and formal documentation, as well as tools to help using it. % n. I) [ i, F7 U9 ]1 Q7 ]8 w* g
gdipp Project supports both 32-bit and 64-bit Windows 7/Vista. You can install 32-bit and 64-bit components separately. The 32-bit components only renders 32-bit applications, while the 64-bit components only renders 64-bit applications in 64-bit Windows. Both components share the same setting file. gdipp may also work correctly on Windows XP and 2003. However, due to the significant difference in the system architectures, the rendering could be less stable and compatible. We do not recommend you to choose the "Windows Service" and "Registry" load modes. gdi++ or ezgdi are alternative choices. / M) S& p/ \8 ]1 N. j Z; P
We are likely to try out new design and implementation ideas in new beta releases, which makes them unstable and even dangerous to your Windows system. Therefore, the startup mode of the gdipp Service in beta versions is Manual for safety. It is changed to Automatic in stable versions. Moreover, we highly recommend NOT to set the startup mode of the gdipp Service to "Automatic" by yourself, or use the registry load mode. We apologize for the inconvenience. 5 b# W! f/ f3 x- A) s! T( E
We are happy to welcome new members. If you are interested in this project and wish to contribute your code, just leave us an email.
: G: Z0 Z2 X& {The project consists of the following components:
2 L7 X; K- Z W0 t0 T3 Ogdimm.dll: the main component of the gdipp project, counterpart of gdi++.dll. Most of the font management, text rendering and API simulating is taken place here. gdimm means "gdi--" for emphasizing its design idea of lightweight comparing to gdi++.dll.
! B, S3 A* V. e3 j/ {3 }8 \. Bgdipp Enumerator: enumerates the current processes in the system and injects gdimm.dll into target ones. gdipp Service calls it when starting.
8 d; b, f. B6 |& Dgdipp Loader: accept an executable file path as argument and run it, counterpart of gdi++.exe. If the process is successfully spawned, inject gdimm.dll to the running process, and the new process will render text with gdimm.dll instantly. 8 c; ?7 h* @9 [
gdipp Preview: preview rendering result with different configurations of gdimm.dll. Help discovering the best settings for every user.
9 z6 s7 Q7 `# Q+ ggdipp Service: as a Windows service, it injects gdimm.dll to target processes, thus avoid enabling AppInit_DLLs for system-wide API hooking. It also coordinates system-wide glyph caching. ( i+ `3 I6 N/ T: _
gdimm.dll plans¶
; a; H, y+ J* U& \System-wide cache . P* W& n4 M1 y6 D# F7 r- Q1 W
Support for vertical text 3 e. W7 _7 ]- C4 S( C
Support for right-to-left text 5 T' ^. h; @# ]8 d' o
Project-scale plans¶ ( f8 t5 }/ M2 Y7 m- d
gdipp Preview ; ]; j k7 T4 O- C- i2 e4 Q( W4 A/ O
Kernel-mode hooking (driver) $ F$ C6 I' {1 }4 d2 L: i; i0 d
Windows Mobile systems support |