以下是引用yzhlinux在2004-4-9 19:33:40的发言:
: s6 m' y7 m' x 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
( ~3 s$ Q. I5 `6 ?如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。" R- [) O# ^- F |# [
我想楼主是想要一个搜索、修改二进制数据的代码吧?
% s+ B9 p, g! B. t" d基本代码:5 K; ~" Q. s ]" [- N$ ~: C/ V. u
# w. U. n0 N5 M6 z4 n& dchar s1[]="\x31\x00\x33\x00\x35";& w s8 X3 q7 X+ ]; S" o3 W Q7 X# q
char s2[]="\x30\x00\x30\x00\x30";5 u& r+ j: H5 T2 g
* I/ y9 c" M' o$ V+ F, P' o
fopen(rpcss.dll...); C+ t* S) L. t q) l7 K
fread( buff...)- X6 h/ G& C! F2 h
T2 }& Y" q5 m* C# z4 i6 D
char *p=memfind(buff,filesize,s1,sizeof(s1));$ z8 z7 l# g' K( Z, Q( {1 D1 C' b
if(p) memcpy(p,s2,sizeof(s2));
' I I% y. U& W$ |3 ^6 }0 I; S" w- b7 c+ \% c% L
fwrite(buff...)+ q8 @* z: f/ H& X9 X: X, ?
fclose()- {( _% x/ j |
OK
8 W7 a" X& a' @* }3 Z9 B' k/ e$ a6 J' L& q# p* c& u! G- A' {
$ h# L: p9 v$ R( l& J. j9 N//在buff中找sub数据
/ ?2 t6 R+ r+ Jchar * memfind(char *buff,int buffsize,char *sub,int subsize)8 D: I7 u d' w" O v* l& m
{+ @5 N3 [' Z i+ }% d8 t: u
char *p=buff;
& K2 K9 ^/ W1 _0 X' s while(p( N0 Q& M5 q6 H+ F {0 d Q0 q- G S, g1 I' r+ A
if(*p++!=*sub) continue;
0 E3 l9 ]9 c- J0 E* o1 ~ if(!memcmp(--p,sub,subsize))+ Q/ I5 G2 W7 M* Z- N- [5 J
return p;3 x3 w/ v) a. Q5 q
p++;. D7 x( y& u/ D3 P9 L$ I
}
2 E7 W4 Q' G* _! y- r. U return NULL;
$ D0 ]1 `1 d+ r( c5 [1 E; x9 ]}
' K) C/ Z- @* B1 I2 p9 J& |7 P! y2 @1 _2 J! J- c
, W6 r* @& \ K! i5 }1 k& H0 z# n2 e' ~' s2 t0 P) L+ L7 F2 g2 u2 `
) T- A [, e) n c0 k7 [+ Q3 P
[此贴子已经被作者于2004-4-10 11:40:12编辑过]
3 t9 c- W$ W; [* W9 ~. o |