以下是引用yzhlinux在2004-4-9 19:33:40的发言:5 g5 i" i& G5 P9 T# {% D+ S# B
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
3 o0 D, f4 K0 C& d如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
* l; I5 K( ?% i我想楼主是想要一个搜索、修改二进制数据的代码吧?% a2 c4 m! i. @8 i- }# ~! D; U
基本代码:
" `* D* ]7 d- ?* Q1 i
8 f5 C8 z9 |- N# M9 Hchar s1[]="\x31\x00\x33\x00\x35";
) K. E! Z6 @" V. T. [char s2[]="\x30\x00\x30\x00\x30";
, a* j+ o6 d* ~# v' o o0 |) q7 _# m- u& t
fopen(rpcss.dll...)
' S5 g0 L5 j& q9 K$ f( Jfread( buff...)
* u# I/ ~/ F& B$ N0 {
- K: K8 A5 `& @- e9 kchar *p=memfind(buff,filesize,s1,sizeof(s1));
2 F& I% @ t# {6 U* |* Jif(p) memcpy(p,s2,sizeof(s2));
2 q. \1 H/ l: D: m+ x& @: {2 \
4 U/ L" h# _. x8 afwrite(buff...)
6 E, n5 I- T1 k, z3 x* i" Y" }2 \% {! ~fclose()( B ]" C' S6 ]4 Z$ W8 u
OK
( g) ~- p4 E5 W+ t/ A* y/ M2 M5 ^0 |( C2 s: y, _ U
+ B. B" @% t0 X: X/ S//在buff中找sub数据 {! H1 K0 J7 A$ | k
char * memfind(char *buff,int buffsize,char *sub,int subsize)8 m q3 c% u$ @0 X" V
{
9 @7 x0 @% ?- n$ _' Z char *p=buff;7 ~; q0 N7 Z& B, Y( W `0 B9 M, d
while(p/ `9 \- a- ?& K* B( i
{# x; A3 l+ i9 i9 f
if(*p++!=*sub) continue;
2 S3 H b3 P+ ] if(!memcmp(--p,sub,subsize))3 S2 k0 j0 ^; Y
return p;. E1 H9 ]' n" Y
p++;
0 Y2 A" @6 t: v I: v: e- K }
, Y6 Q8 ]1 N& g/ j# T return NULL;
' z+ M' J# U; i% s/ M5 o1 o D}6 s5 G1 q5 C) K
7 M! H6 M! K) g4 T. y5 O0 d, Y
! O+ E% R- }3 A' _6 H! ]
# k8 H* Z# h/ i: e9 i: h" z, c8 k4 T; C
[此贴子已经被作者于2004-4-10 11:40:12编辑过] . L- L1 T0 n$ x8 L. R
|