以下是引用yzhlinux在2004-4-9 19:33:40的发言:$ v' Z2 \+ H% V5 u4 G
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 ( E4 o4 @" t# y) n5 l
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。3 T5 @: f. w4 \0 L% r$ N
我想楼主是想要一个搜索、修改二进制数据的代码吧?" H; u O \) \2 Z8 Y1 |* |# [5 C: ~
基本代码:9 P" Q0 Q( l! x) {! O% P2 Y
4 |/ g" N% y. o. Z( T. |4 Y; b
char s1[]="\x31\x00\x33\x00\x35";( N, V0 V3 L' y [6 [, r3 G u# Y! y
char s2[]="\x30\x00\x30\x00\x30";3 w& G3 W* i6 {# G; Q8 D" ?3 c Y
. t" }6 L# I8 P5 {fopen(rpcss.dll...)0 X5 ?$ h3 x; p' { m2 o
fread( buff...)
1 j+ _5 S1 N* }# R: r/ T0 |4 s
6 ^8 Q. h2 _4 r+ N( z3 Y2 tchar *p=memfind(buff,filesize,s1,sizeof(s1));9 n* w% K" |" [- L* |
if(p) memcpy(p,s2,sizeof(s2));
9 g4 ?# W+ y9 Q
& C X. Y& ^" q$ C& V. t: L5 u- nfwrite(buff...)
8 y1 S/ X% u! ]2 G& I3 x+ lfclose()' ?5 i9 u5 G- v% v
OK7 ]% j1 P0 `8 W* j
( Z' g/ V- i1 N6 v- }$ g" u
0 p- ]6 `; V& _' i2 [3 o% b//在buff中找sub数据9 @, O* B" ^9 w% B2 l2 u
char * memfind(char *buff,int buffsize,char *sub,int subsize)
# b+ ~) E. Y2 T: P* l, g% p{
. X# m; {& V$ l/ A char *p=buff;# R1 A9 u( \4 G, E3 i2 I
while(p, H5 I- y: I2 X9 _4 K {/ h3 x3 }4 g& a' O$ H) D
if(*p++!=*sub) continue;
' k, b$ H0 y" V% p; F0 r if(!memcmp(--p,sub,subsize))
* o% g1 r$ s+ d N return p;. K: O- B0 F! B& ~
p++;0 q- H2 }; n3 |4 ?3 J/ F9 n8 X6 Q
}
9 n5 l9 _" v. U# u3 B' h return NULL;5 r; m. h; o9 t2 V' H9 z: C' D
}
3 c+ E4 \1 k2 j$ k, g
) ]5 h. X n4 A
- j/ a( i0 J3 v* c+ P- e7 k q5 I' P1 y, F* S
$ ]5 Y7 [/ j# y! x4 S
[此贴子已经被作者于2004-4-10 11:40:12编辑过] 0 D- u- c5 I( x2 V: f6 a
|