非SSE2 の GDI+ API v1.1 に準拠のDLLを Win95 対応にしてみたよ!

GDIPLUS バージョンによる違い【SSE2】

Word Viewer のセキュリティ更新プログラムについて: 2018 年 7 月 11 日

先日の Word Viewer 2003 に添付されている GDI+ のランタイムの更新を改造してみました

 SSZ39826B50_InterlockedCompareExchange:
db	'InterlockedCompareExchange',0
L39826B98:
push	ebp
mov	ebp,esp
cli
mov	ecx,[ebp+08h]
mov	eax,[ecx]
cmp	eax,[ebp+10h]
jnz	L39826BAB
mov	edx,[ebp+0Ch]
mov	[ecx],edx
L39826BAB:
sti
pop	ebp
retn	000Ch
;----------------------------------------------
EntryPoint:
push	eax
lea	eax,[esp]
push	eax
push	00000040h
push	00000004h
push	KERNEL32.dll!AddAtomA
call	[KERNEL32.dll!VirtualProtect]
push	SWC39820E30_kernel32_dll
call	[KERNEL32.dll!GetModuleHandleW]
push	SSZ39826B50_InterlockedCompareExchange
push	eax
call	[KERNEL32.dll!GetProcAddress]
test	eax,eax
jnz	L39826BE4
mov	eax,L39826B98
L39826BE4:
mov	[KERNEL32.dll!AddAtomA],eax
lea	eax,[esp]
push	eax
push	[eax]
push	00000004h
push	KERNEL32.dll!AddAtomA
call	[KERNEL32.dll!VirtualProtect]
pop	eax
jmp	L39965B14

SSE2命令を使っていないので、Windows 95でも大丈夫!

InterlockedCompareExchange が存在する場合はOS独自処理に飛ぶようにしたため今までにリリースしていたWindows 95専用 GDIPLUS とは違って、全OS対応版のバイナリになりました・ω・

もふったー最新版で動作検証済みです

Windows 9x版のみ先行で作成したので、WLU からダウンロード可能です
Win NT系版のインストーラーは少しお待ちください( ˘ω˘)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です