以下是引用yzhlinux在2004-4-9 19:33:40的发言:
6 n, C" M k1 E9 O 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 ( T/ T2 V( H, O e
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
! G) t7 h# _/ J我想楼主是想要一个搜索、修改二进制数据的代码吧?
4 y3 h# R1 r* I, P0 h8 Z基本代码:' w$ T( _. f [ Z' h0 U0 \
3 K& z7 S6 T4 f. f/ R; K0 d
char s1[]="\x31\x00\x33\x00\x35";
7 r& f( [: l6 }9 t& Xchar s2[]="\x30\x00\x30\x00\x30";; a7 |0 ]0 K3 h
: F) \, o8 z5 x, \
fopen(rpcss.dll...)$ F% K8 G6 e4 Z& W R* {" v
fread( buff...)+ \- _5 W% O. \$ [
3 K9 i: ]4 C% W" {6 B' g/ T$ C
char *p=memfind(buff,filesize,s1,sizeof(s1));
* g! I U7 Y, j' e7 K! cif(p) memcpy(p,s2,sizeof(s2));
0 X" d5 V( {: t! O* |+ p1 o/ c/ @9 c- t( s
fwrite(buff...)2 v/ D- ?8 o8 y8 I8 I% M
fclose()2 @. B/ l+ c$ |
OK; ]9 q$ s! m4 I* Q
. h& l3 z# }' S( Z% Q1 b
; W# ?/ `5 ^4 L+ v, N) _! ?
//在buff中找sub数据2 W: l9 ~- q: T4 {8 Q5 i7 X o
char * memfind(char *buff,int buffsize,char *sub,int subsize)
2 G: v4 @( b6 n. g{
1 ~; d8 d2 _" h9 n9 F1 s& X char *p=buff;
! ^: }8 l3 Q$ x' K7 l while(p# p0 @' t9 U' [1 g5 Q {$ K. s. A$ C+ _: c) p
if(*p++!=*sub) continue;
+ G G+ Y: l% @/ Z% @( M if(!memcmp(--p,sub,subsize))
) \& p* O% R9 X* w) D$ b" Z/ N return p;1 m% X M0 }1 @
p++;
$ I" P6 W$ C/ \# ~6 w7 | }
9 ~. L3 k% O. f- J1 R( P return NULL;1 L# R+ O ?4 ]: i/ O. x* n7 j3 B, ^
}
5 p% @& Y8 k! x* j S% }- m; t/ J1 [0 q" H0 [7 E
" A3 m' D5 n6 c; u4 u7 i1 k( W( w& z1 |: V; ^. z; K. k
" N- {1 c+ f! k5 m" C
[此贴子已经被作者于2004-4-10 11:40:12编辑过]
0 [* S/ J. N7 z) P |