|
以下是引用yzhlinux在2004-4-9 19:33:40的发言:$ w5 A. R j5 D ^ |$ g
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 ) F- V* p4 x9 \% J$ x% j
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。7 Q' m( [/ s* v
我想楼主是想要一个搜索、修改二进制数据的代码吧?7 ~; a: W$ ^' u, T- I
基本代码:
. \, e2 c4 ?, c
$ ~) |; {7 J0 X: E* [' }char s1[]="\x31\x00\x33\x00\x35";
1 ^5 i: |( Z( ?/ `1 Echar s2[]="\x30\x00\x30\x00\x30";" s6 U2 H4 @# Y" W) Q# B
! P/ s" `! x& u, C: R, g' U8 V/ i) N
fopen(rpcss.dll...)
% q( z' z$ W) a0 K+ j' P! sfread( buff...)
. V8 i- c. t) d' |/ g7 B8 d/ G }( J+ `" L4 y/ Y c7 ] }& ~% U
char *p=memfind(buff,filesize,s1,sizeof(s1));8 y* c+ Y9 t7 m# r2 `$ F
if(p) memcpy(p,s2,sizeof(s2));
' o: y6 y. v6 W6 S* b+ x* E2 E& x5 r$ G! A" g3 r4 k4 } O
fwrite(buff...)8 U# S8 K4 W; L2 T) r; z1 }: P* I' X$ A
fclose()
1 Q* r8 b1 E# t) t# lOK! }. E D/ v( B6 L0 E
0 p3 R' H+ ~9 o) c) ~
) ]% t4 X5 V/ x6 d# S' ], h1 _//在buff中找sub数据
, d% m2 V* I5 d0 R8 F+ g7 f, P- |/ ichar * memfind(char *buff,int buffsize,char *sub,int subsize)
+ U5 s: N+ [- U* T( X{
: _. r! r" B+ N2 ~ char *p=buff;
) S6 N0 f; N8 q# m) w' J# ^! T while(p& Q' B( q: f% J% W6 G+ I {) I9 I( Y5 D1 p/ a
if(*p++!=*sub) continue;: P# D2 T& j+ n
if(!memcmp(--p,sub,subsize))
8 M$ z) e5 r6 b; x return p;3 p3 d+ y, u, ~+ U
p++;
" f6 p1 B7 ^% R: ]7 P6 e4 e6 c }
+ l+ y" M. q) n/ [$ \9 L return NULL;' F. Q9 M4 D, i- ?, b
}4 b% |5 N( F w9 b0 F# s; r
' V0 D% ?: q+ w0 X% b
8 w; S* ]$ m" n2 r5 S( p) K8 @1 i8 I' b
* x" q$ Z+ s$ F) ~: a[此贴子已经被作者于2004-4-10 11:40:12编辑过]
! M, P" k4 H1 {7 d |
|