以下是引用yzhlinux在2004-4-9 19:33:40的发言:
8 `' J J. e8 g! |3 c* }6 D, { 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 5 _+ w$ y- k# X8 e! L& u) N. d
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。, I/ w, T2 {4 P+ V$ }; W% I
我想楼主是想要一个搜索、修改二进制数据的代码吧?
3 [ M1 g* w( }6 F+ A, W( ?; h基本代码:! a+ Q0 g- Q" r2 e# K
( {5 s6 ?/ o9 V3 x V' h+ w& H
char s1[]="\x31\x00\x33\x00\x35";
3 A5 p4 q" e% fchar s2[]="\x30\x00\x30\x00\x30";; u* Y7 G. ?3 [3 r: B
% m9 N# \0 @$ Ofopen(rpcss.dll...)1 J6 Y1 j2 V( ]3 S
fread( buff...)9 |" k# ?9 ]$ v3 E
5 z* D6 ^: y5 C" f6 ~) v8 R& K0 echar *p=memfind(buff,filesize,s1,sizeof(s1));
2 r' h0 e* J/ M6 H/ Q& Pif(p) memcpy(p,s2,sizeof(s2));
7 q+ E( O9 }2 C$ h" r! `. V) w+ Z
6 g' X. J: {8 z! K: y1 Sfwrite(buff...), i. t, U1 T9 c; ~
fclose()' H9 r: B0 i+ {% T! R" ]
OK3 f4 `. ]8 I6 \" [/ O
' w' ?% e/ \! t9 s3 v6 P
: Z9 O; ?0 c4 ?//在buff中找sub数据' V6 [1 J7 r+ e; j* \+ Z6 Y4 P
char * memfind(char *buff,int buffsize,char *sub,int subsize)
. S1 @& k/ d- U b9 y4 w{
( o3 Z( d# W& Y6 ?1 S char *p=buff;
! _6 n$ d8 P3 y9 O& Q5 g while(p3 L+ s% @( V; `- Z {
! J9 E' `9 ^4 q1 }2 O) f- r+ H if(*p++!=*sub) continue;! K# x1 x7 C8 n9 e* G$ h3 `9 B0 E
if(!memcmp(--p,sub,subsize))
, p8 k+ I1 T+ ^ return p;
8 U( t9 o8 V& M3 b) Z4 q p++;: o: ] P y5 l: d( j) e: W, J; m* F
}
5 x6 h$ G" ?+ e; |; U return NULL;& x6 z' R3 ^* \2 l' W3 c. p
}% t" b0 w, {) J' t3 {' n( l( U
. ~+ i2 G" ^& w3 b# a
" ^& q% w% ?4 H1 m' \: b1 ~5 O" Q% P. m! X. s3 k# n; f) B% D
& Q3 j" s. n& w( f) d0 |* u
[此贴子已经被作者于2004-4-10 11:40:12编辑过] / q# z4 U6 W6 @9 S( t# d1 ?
|