14 LPCTSTR lpszFace 0x09148a58 "Arial" 0x09148a58 "Arial"8 H/ s) s$ N. B; {+ Y
复制代码
9 |% B, Q: j! p+ f, U
" P# c7 S8 s3 t1 Y# G
用ida pro找到调用CreateFontA的源头函数如下。 5 l. S$ J- |) J# m. _, ?$ `从函数的参数可以看出,这应该就是字幕显示函数了。 $ k+ d- r+ l. h关于后续修改,先修改CreateFontA函数的fdwCharSet,lpszFace这2个参数,也许就能出中文。 8 C2 C. ^# O. o8 u3 a4 l还不行的话,就自己写一个显示函数。以下函数中lpMultiByteStr就是指向字幕的指针。' _- y) [, o( i9 K" G
, N9 c2 \" {$ T4 [' t2 [- X; P$ o
bool __thiscall sub_10058A00(void *this, int a2, int a3, int a4, int nNumber, int a6, DWORD a7, int a8, int xRight, int yBottom, LPCSTR lpMultiByteStr) 3 L2 k8 {. t9 } x5 O! {
{2 j- s5 j4 C8 S
void *v11; // edi 9 a1 J) a5 O2 k- B0 D3 D; ?( H* g
int v12; // eax5 K% f: x( \7 O! v& O* w& B
int v14; // ecx , @$ ^" i, e o6 t- {4 F7 h
int v15; // eax $ Q/ j; k8 V E4 U0 G4 J) S- |# D: q9 h
char *v16; // eax6 u* l- J6 a* i/ N; m. Y
int v17; // eax, H7 q1 O+ o" E# X) X. `
HDC v18; // ebp 8 _* P! x* V. v( f5 _" W7 w
int v19; // eax1 j+ g% u! Z/ G$ A* U1 [# z% R
int v20; // eax9 [. q% z. B3 |* c
int v21; // esi 2 q Z* O% l1 O% Z/ z; }7 [
char *v22; // eax a/ m1 x3 }5 i! q; b4 J
int v23; // esi 6 u5 q" l3 a0 [
int v24; // ecx 5 E# H, X' C2 g* F. E1 C
HBRUSH v25; // eax n1 }9 a/ ^/ E2 y1 E5 R
signed int v26; // ebx + o) U; ?" I8 c2 t) |
WCHAR *v27; // eax . r; K# X' R% q) v# O
int v28; // esi! d h0 ^- f* M6 I% h" f
int v29; // ecx , q# y& n( i' g; w: s3 s
int v30; // eax. V' J" u' K' r8 _, L4 j
int v31; // ST28_43 @* ]5 e0 ]( w/ {( ?% |* V8 B' q
bool v32; // sf ' e+ `& o3 b) u; P
unsigned __int8 v33; // of, R+ F. J2 Y; l4 ]! G
unsigned __int8 *v34; // ebx6 W* w( S. H) W( g2 ]* X" n2 h
int v35; // ecx & c5 r5 K p- w# `
int v36; // esi5 S8 u1 }! K* ^" A; L4 f2 n6 R
int v37; // edx7 J" a" J3 T' l
int v38; // eax 6 @( `* v% r M7 i0 F# F% }
unsigned __int8 *v39; // ecx" K0 M/ f U- S" I% o( b
int v40; // [esp+40h] [ebp-2098h] & Z* J; {5 J' ]
signed int v41; // [esp+44h] [ebp-2094h] : {! a' o, ?( E. D