以下是引用yzhlinux在2004-4-9 19:33:40的发言:
2 u* ]5 j3 P& q- h4 } 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
. Y, _, k/ m9 I! _5 T! A6 ~+ p% W如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。$ ?) X, B+ G6 r$ V, e& ^3 y
我想楼主是想要一个搜索、修改二进制数据的代码吧?+ i" W% y" G$ s
基本代码:( v6 W' b# B8 L/ G2 e+ E4 @7 R8 t
" v5 X- D- C) F% d$ Y5 H$ H- H
char s1[]="\x31\x00\x33\x00\x35";
. P8 w$ V3 r' j: i$ H: F. S Qchar s2[]="\x30\x00\x30\x00\x30";
: l' i \1 W$ E( Z2 o% u. z* t- G$ F
fopen(rpcss.dll...)' [- @0 ~- @2 p# d1 I% o1 h' V
fread( buff...)
2 U; C0 d; V' `5 p* i- Y
: V, `2 l9 |- _# ?5 C5 R: Pchar *p=memfind(buff,filesize,s1,sizeof(s1));
' H& I( s( p, {$ M6 k3 V! R. Bif(p) memcpy(p,s2,sizeof(s2));
2 I3 w( L" S, Y# [7 m- ]( R4 }. D* I' Q2 \9 `5 I! T9 e7 P
fwrite(buff...)
3 Z1 @# |- T9 l# ]4 n" S; S. Zfclose(): O6 \* E7 p0 e$ _) n3 Q- H' h
OK
) q* h0 r* V0 O( q- N1 _& S! ], _: J# X% O
1 n2 `* ^# L5 n J0 U% J; ^//在buff中找sub数据
8 a9 I+ R- v5 N" V, G" ]3 \char * memfind(char *buff,int buffsize,char *sub,int subsize)/ Y1 e, X7 Q& C
{
+ E) R& ?" ?# j. Z( _ char *p=buff;
" |( {' [+ U, ~( I& x while(p2 ^( b9 l/ z4 _$ k
{
( C7 Z1 i* T3 N' ~0 H" e! { [ if(*p++!=*sub) continue;
5 h M5 F! u2 ^" I0 D if(!memcmp(--p,sub,subsize))
7 I3 P: Z- }" J' m0 ^& L9 M' i( x return p;
* I9 B6 _# J- S3 _; V; b- j) I- ^3 c p++;- [, X/ {5 d/ c: v3 G2 M
}3 D4 @$ f9 A" z
return NULL;0 b! V9 D7 R$ `: W& f% B7 p6 `
}+ l& j6 ]9 q5 J* h4 q
( \+ m x/ G' J; V
! z$ J) f% G/ a; r
2 u9 @7 s3 ^# }1 H- B0 z
( g0 ^9 w5 F9 y+ }[此贴子已经被作者于2004-4-10 11:40:12编辑过]
c7 }! j3 t2 d0 k& b3 R: N |