以下是引用yzhlinux在2004-4-9 19:33:40的发言:
4 d1 g- U" G" s5 R" E# X: T 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
6 v& F7 q# s+ |如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
2 B. e- l0 P3 P我想楼主是想要一个搜索、修改二进制数据的代码吧?
1 v9 [/ R4 X: D1 D8 \+ b基本代码:
! `6 N& v+ C/ r4 g0 g2 |" t) x8 t2 b2 d
char s1[]="\x31\x00\x33\x00\x35";7 {/ ~4 P) @$ g' g' {. L" v
char s2[]="\x30\x00\x30\x00\x30";
( Q1 y& ~) x6 L4 |& ^0 C
- [+ C' ]" \) H/ `" m( `. Z1 Kfopen(rpcss.dll...)) y0 C8 w8 i+ [* g/ ~' O
fread( buff...)
1 T, f" _9 h4 c3 M/ l9 i* L; ?# O/ w
5 `( [3 S1 j: s% V. ~char *p=memfind(buff,filesize,s1,sizeof(s1));
- Y: V+ a4 c$ Y1 c8 F+ z Y2 J) P, q: [if(p) memcpy(p,s2,sizeof(s2));
( r' w+ E: q2 ^5 L' t+ p3 X
* I" a3 l! o$ z1 I* y3 ]% afwrite(buff...)+ X4 A; w' w" D i& \' n! K0 \
fclose()
/ {* D! W1 |/ s" I% [, U9 UOK
2 b G5 N. W2 E3 H# _! [
, d( J- a3 U7 F, \- g' {
. o6 v" z/ ?; `9 ^3 K% n//在buff中找sub数据
e7 P1 {& O7 {7 P, O5 cchar * memfind(char *buff,int buffsize,char *sub,int subsize)
7 i) n2 P4 e7 N; N' u% A/ d% R{; _( F$ m2 Q2 d7 A
char *p=buff;
) `# M! p% }! Y$ }0 D while(p' m; |6 t" |$ `+ e& h {
( n, f' b6 ?8 y1 F9 c, M/ L+ R if(*p++!=*sub) continue;
* P' h: R3 G; p% w" V& U if(!memcmp(--p,sub,subsize))% Y4 Q0 |7 d( ]( w% G( Q, f( J
return p;
0 `9 y! ]: L6 [, I& G8 s' A5 R- P p++;* W Q" c& O7 y X: u
}
8 {# [3 d# u; j( a return NULL;
: |- X# ~( N7 c; c/ L5 r}. _+ O8 H1 E8 J6 I1 h2 h
/ B" N& e3 N. w
, H4 P" p( S: O. W' z& r" U; H# S5 K/ n
' v9 N$ r9 L- X! z5 h
& o' I; ~7 g* ^) S& A1 K; Z
[此贴子已经被作者于2004-4-10 11:40:12编辑过]
' O& R9 v. @4 \ |