以下是引用yzhlinux在2004-4-9 19:33:40的发言:2 j0 R' u9 F8 K: E
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
) F) s9 ~! A9 Z如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
$ w a% ~5 v% v5 ?8 _我想楼主是想要一个搜索、修改二进制数据的代码吧?, |: K) r* A( k9 H5 S9 l1 y8 L: B9 w
基本代码:) e* ?/ l8 e, x, f7 C! p
5 D& X3 G' R0 _1 v- k
char s1[]="\x31\x00\x33\x00\x35";4 x! ^% O4 H# O6 \1 W4 C, y* [3 e
char s2[]="\x30\x00\x30\x00\x30";
7 M' a/ x6 W/ @
8 [7 n& I+ p. ?: [' t( U" bfopen(rpcss.dll...)8 W3 ?7 B( ]5 O5 b2 G
fread( buff...)
. e. }/ @% X" E+ Y# t
7 Y; d% Q4 y) f7 h7 i) Ychar *p=memfind(buff,filesize,s1,sizeof(s1));+ z) U3 O8 Z7 y; x+ G
if(p) memcpy(p,s2,sizeof(s2));' V1 {2 g/ F' Y5 x" K
, b$ ^9 s( x' ] p% Q5 Sfwrite(buff...)0 j6 F" z4 v2 \' X* W6 H
fclose()1 o" \ \: j3 z- p
OK: Q' w; g7 J, n2 K: Z+ X
- y X( o( s, ?' g
+ X' D1 \1 o, h& R8 v
//在buff中找sub数据9 M+ f: ~% ^# w# ^% H) ^2 H
char * memfind(char *buff,int buffsize,char *sub,int subsize)
/ l% [4 U% k5 j8 ]8 Y: b) \{5 g3 k/ K0 m; I/ Y; k* @% d
char *p=buff;! K/ B7 ]& M t: H, s# V+ \1 ]
while(p) [$ U; |) u5 t/ V {
. d, d8 w) r2 [- A" q if(*p++!=*sub) continue;
0 r$ G3 ^2 G8 Q5 I/ ?) r. B$ o if(!memcmp(--p,sub,subsize))0 m7 w2 j( Y, ~/ N7 q; l! o# B% [
return p;
& t" L0 a" ~; w p++;7 R {8 ~ v+ l2 g' ^: I0 N; k$ P
}
+ B: d, t( o3 Z/ l) s& z8 N2 I return NULL;8 |2 a; N2 B9 N4 o" ?- g) {/ m
}
6 R& g+ A- F; j/ y& E7 U( v( O9 C$ e3 c$ U6 d9 k
' e5 W5 s5 G( k- R* u! [3 [; t8 }+ u- V
2 }2 A! k+ c. O% t! S) Z[此贴子已经被作者于2004-4-10 11:40:12编辑过]
3 ]5 J5 L- P" x5 f% U2 I |