以下是引用yzhlinux在2004-4-9 19:33:40的发言:
0 h8 w4 E/ m7 r4 F 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 3 S; Q7 M- q6 Z8 F/ M
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。6 H& n5 v8 N Q, l7 t
我想楼主是想要一个搜索、修改二进制数据的代码吧?
/ r4 Y2 w* ]% O( U基本代码:6 q. _# g% H J6 i. w
0 x* e5 s- Y2 B! h$ wchar s1[]="\x31\x00\x33\x00\x35";
1 H+ G2 `2 B/ ~. d. L; xchar s2[]="\x30\x00\x30\x00\x30";1 v# R% T* U0 T8 D/ r
8 P- G" Y/ X6 W( w9 Z
fopen(rpcss.dll...)
z: I1 y5 c, n o! w# R1 \' Ffread( buff...)
8 V( T" a) o# A" Q) Q& N- O5 a" L& W) D. O, o1 k2 Y4 z. }
char *p=memfind(buff,filesize,s1,sizeof(s1));
$ P: S; P6 u: b( r0 ^8 hif(p) memcpy(p,s2,sizeof(s2));) |* P+ ~, f' e6 R/ J1 P9 v5 t
* X* W2 V% e7 C: L/ A7 b6 \fwrite(buff...), P3 S9 ~" x) j3 f- l
fclose()
& W6 `* M4 w* R6 M% N: x& p1 n6 [- VOK
6 F! ?/ J$ U, C
& F: r6 s. ^4 r1 e* [3 S! O* a2 W% v. u9 l$ f. {# R* O1 l) z# n! z
//在buff中找sub数据
7 M% q: x* i$ ^7 J4 ~char * memfind(char *buff,int buffsize,char *sub,int subsize)
! C: }3 N/ s$ T# g7 i{) {8 k5 t! j9 f6 F8 O! K# l
char *p=buff;
- a+ t N2 g+ [- N/ V0 y while(p; t; O1 `1 w4 p5 p2 y
{
$ G- K+ ]- `& N8 [/ Y if(*p++!=*sub) continue;/ g& y. l# X! B- b, D
if(!memcmp(--p,sub,subsize))
, f) W% ^. e8 l: Z4 }; E; L8 ^ return p;
' n: t% {/ H5 v3 \ p++;1 ]8 _+ c7 w+ O! r, Z p
}. V7 b6 _: v6 ^& [
return NULL; ?: Z3 _5 Z( D$ H) B: \, m
}
2 ?6 \$ |% ^1 i; p& a8 o3 q$ Y9 B" X: ]) A$ N0 R
$ v$ i, z! l: w4 v( s7 O, a
! X# O4 F8 U) h) p0 x
+ O3 I6 A+ Q2 \ M8 x/ o; C[此贴子已经被作者于2004-4-10 11:40:12编辑过]
* l5 l- { W3 m& I |