以下是引用yzhlinux在2004-4-9 19:33:40的发言:
8 K0 ~& K% E3 b1 N& v9 I7 b: J 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 5 {, P! H+ H9 u/ r6 U9 `' C
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
6 }% R: K( }; a' H9 \8 ^$ q: r我想楼主是想要一个搜索、修改二进制数据的代码吧?2 C( {. a- o2 b1 X" K6 t
基本代码:' g4 |3 ^2 A u$ ^& T: G
" B6 ~8 N9 `0 r9 e3 ?/ l F! }char s1[]="\x31\x00\x33\x00\x35";- X% J1 h4 S1 \
char s2[]="\x30\x00\x30\x00\x30";* }% ~5 u: y5 W/ r' y7 }7 Z
- S7 p7 Q; F0 ~, Qfopen(rpcss.dll...): P/ J1 D+ ^- g8 j R+ h* W9 m
fread( buff...)7 o, c& _7 v0 J! S* a1 p) v" T
9 Y0 a( y' e. p( l
char *p=memfind(buff,filesize,s1,sizeof(s1));
: M; A' U5 ~' P# }3 z' Y9 Hif(p) memcpy(p,s2,sizeof(s2));! r) v6 i7 B- A
; U5 [( a! I1 \5 U2 ~" I
fwrite(buff...)
6 m: U! c) B' ]7 H! U+ {fclose()
1 n# h" Q2 h" V4 F- _ M/ y0 S# pOK
& u9 n) p, G- F7 K0 f7 k
" G$ E5 E: |3 T( V: R) b7 F* x: w: B& w; j
//在buff中找sub数据
/ p7 t: p* `( U9 l# C# _. ?char * memfind(char *buff,int buffsize,char *sub,int subsize)
& k" R" O$ ?. d w{
& I3 |1 W" K1 D+ I* m; k0 F char *p=buff;$ d# P% T9 j- N
while(p) u1 X+ s! e7 L2 b# n: V) T3 O+ m {
# y, L8 f- k1 f0 v if(*p++!=*sub) continue;
; r6 I: _, [; r9 t4 @ if(!memcmp(--p,sub,subsize))
; X3 D/ G8 j0 ^0 r" N$ g( O0 J return p;" Q+ U$ y. l- z8 g
p++;
u/ U9 q1 e3 K! n% b) S }0 }$ m! }0 q' L+ N7 I @
return NULL;
0 R6 q. ^- t) n3 `}
) |- h$ p4 P. L5 r' R9 H. d, @6 ^& q/ O& {7 ^
) v; u# x/ ?7 l9 G
5 `+ S$ W& a" b5 {3 o8 u5 `' F
/ z( ~8 s9 ]# p) P5 F* q& q J. U3 ~[此贴子已经被作者于2004-4-10 11:40:12编辑过] : z$ B$ f0 y0 I# T: ^6 m9 u8 ]
|