以下是引用yzhlinux在2004-4-9 19:33:40的发言:1 @* X5 C5 ?" H- p
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 ) {4 b9 w. ?) @6 x. T
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。1 B6 w! \: ^6 d% G% ~$ \
我想楼主是想要一个搜索、修改二进制数据的代码吧?2 j5 A$ G i/ |4 P# J( Z6 e# m1 i: z
基本代码:
+ s& k5 P+ M* H; P) x9 ]
3 D. h) y3 [2 w3 F) ~char s1[]="\x31\x00\x33\x00\x35";
' b. L: c& k9 `2 W, I9 Ychar s2[]="\x30\x00\x30\x00\x30"; \8 W: ~& b8 o
# }* p. s. u. U Y$ h
fopen(rpcss.dll...)
! k2 y7 O) P% t* Kfread( buff...)- z+ [ C9 N; j0 D3 `
8 G8 g# {' ]. ?. k2 K: ?% M
char *p=memfind(buff,filesize,s1,sizeof(s1));4 T" D" ?3 U1 Q( O' O
if(p) memcpy(p,s2,sizeof(s2));
8 Q; ]) a- X* g3 `" b7 q4 F9 C% }; V7 I* A8 L7 p
fwrite(buff...)% q5 k) E! b( q- U+ _ C4 W! ?
fclose()
" m4 e6 c+ r i5 YOK
9 ?7 a( w4 ~5 `9 x, `+ E% g: y' l' G% f1 W$ h% j
2 C$ c5 Y3 ^2 H s//在buff中找sub数据; p* e U; F% \3 S4 V
char * memfind(char *buff,int buffsize,char *sub,int subsize). x# t O3 K8 I& S# D
{
5 v! f# p- s: G! R. M char *p=buff; V4 L4 _- k$ O1 T- r
while(p( F* ^' e' p R, H' F' l$ w7 E {1 b, M( o i9 p
if(*p++!=*sub) continue;3 c$ N: ]2 ?1 P+ B, F- p
if(!memcmp(--p,sub,subsize))
$ r# l9 L6 A- i2 k A return p;3 J3 H) K! y% x- |
p++;
. }& X6 |/ ?7 J0 @2 W0 D9 m }) g% A" _$ x$ }" @
return NULL;
3 [. V) b, S T* J( `1 }}
, c, v! _/ f4 Z- H/ i
# o9 L/ u8 H) b" u x5 M, v' s( _5 B4 [5 B
, n' u/ f& q1 m9 R! j( \+ e
! R, |7 i- `- q6 v[此贴子已经被作者于2004-4-10 11:40:12编辑过] $ u& k6 N! t. s
|