以下是引用yzhlinux在2004-4-9 19:33:40的发言:8 K3 v6 g8 X! x) ^- F
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 6 Y \- C, ]8 g* b$ v w) \
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。! Q. Y( j8 e" I3 o/ I8 i( t' _
我想楼主是想要一个搜索、修改二进制数据的代码吧?
9 O9 E( p. \+ {$ I$ L. C基本代码:9 a& q# o% S% s) K* `
% X7 R2 F& i) d5 i9 ^/ w
char s1[]="\x31\x00\x33\x00\x35";5 E+ n/ ?8 @3 d( p( q) G
char s2[]="\x30\x00\x30\x00\x30";
& h6 H. l' t5 R* s. Q3 \2 u8 \; ~
) W8 W3 p, V- g2 Xfopen(rpcss.dll...)
& {* r7 n, A* ^' q8 X/ Y* ]fread( buff...)
. k5 m6 g0 ?& }
# ^; V$ A# m5 ~/ Q2 [char *p=memfind(buff,filesize,s1,sizeof(s1));1 `- _1 @- j- y3 o& I! V6 x
if(p) memcpy(p,s2,sizeof(s2));" p0 N9 w# d, g/ j5 p
$ |3 t! \6 L i/ I3 Tfwrite(buff...)
' m _, m* b9 A) Dfclose()* L' Z4 f! @: s6 Z) m8 W1 X
OK. ~% P# ]2 k& B' e
$ f6 o' j& H. P) S3 z+ a+ e. `* [* P+ i0 Q
//在buff中找sub数据 w9 q1 G( ]3 i' D1 \
char * memfind(char *buff,int buffsize,char *sub,int subsize)
) h% B' f2 ]5 J& U{
+ L( ~' `) B3 X2 U6 E char *p=buff;6 {. ?; z5 C& N. ^
while(p9 `1 E- B+ c$ C( d5 d! @7 K" X {7 y3 g* |( Z/ G' @ }
if(*p++!=*sub) continue;; }) g J% C/ Y" r' T& { r% @
if(!memcmp(--p,sub,subsize))
9 n; H; b4 ^3 s( G% @0 |) D, h return p;' l6 h! K1 {4 z, o% q. z
p++;
; k* F' Z- `% A6 n }/ |5 e5 L. c0 ] U( Y7 U1 h
return NULL;5 I- g/ g! |' g" @, S$ J
}0 ?. k3 ~& \- J% U/ l6 \
% t1 n: F5 ~* x- J( {8 ^; j6 Q
/ V6 M* G, o2 A5 ]3 B. q+ L" g. [' L/ Z
! F3 C- `1 k4 k1 B[此贴子已经被作者于2004-4-10 11:40:12编辑过]
' D& W9 Q. z1 r# s& ]6 a# p* p& y |