以下是引用yzhlinux在2004-4-9 19:33:40的发言:
! g9 x5 n2 A5 d: G3 g& B 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
6 f" a! j" r: T$ n. ]+ m如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
) j- ` V' \: Y( o, ^- O1 ?6 X我想楼主是想要一个搜索、修改二进制数据的代码吧?
P3 ?3 K2 G+ F' d% {基本代码:
3 e5 k Z! y2 A7 w& e. S+ \) Y3 z) R+ F1 f
char s1[]="\x31\x00\x33\x00\x35";
% X. K% B! l& a' Ichar s2[]="\x30\x00\x30\x00\x30";5 }5 C" q+ y3 t) q9 s
7 R" `8 x- l8 W5 C/ Ifopen(rpcss.dll...)
+ ]* B6 E. P# }6 ifread( buff...)
( ], e/ C9 X) ~, J! i# X4 ^
6 a7 L& W. i) ?char *p=memfind(buff,filesize,s1,sizeof(s1));& |: g' q3 @' ]0 v$ A% R* `3 Q
if(p) memcpy(p,s2,sizeof(s2));) b7 D8 |$ X9 @2 M# E! D
: m% F; L8 s8 ?8 z; p
fwrite(buff...), I: o1 u6 N9 `- e, P3 w7 u m
fclose()& V! n) [+ R: l+ `* Q
OK8 b+ x" G. {5 [6 y. M3 j# l* j
; R, I! c+ @; U* Y$ Q: C3 q+ O4 E; H/ S& f" b! J; v6 r0 U6 v+ j
//在buff中找sub数据
, J/ p% Y& s$ E1 D% c5 dchar * memfind(char *buff,int buffsize,char *sub,int subsize)
% j5 A% [& T- T( Y{
" \. E' w) S2 m2 i& v char *p=buff;. Z m' e5 W( m4 Q& i
while(p4 _5 z$ l( A V
{8 ?+ ]" v% a. t/ [
if(*p++!=*sub) continue;5 S( W. d. e, B9 Y: w
if(!memcmp(--p,sub,subsize))
' R6 o/ b2 J$ C- B return p;& E* S: n8 u5 u+ _$ p7 F* H( h* b& E
p++;
* F8 J! s; k7 [% I/ j2 c }
. Z ^' o8 L( w- P- } return NULL;$ B9 B4 c: ` b- j6 z. Z
}8 |; E: F. ~; ~
; S l' c9 I* H$ S. l* K: h n. z
7 a5 L1 p1 I$ n9 U8 e' ~$ [
' a. A% ^- A2 K( g9 u% L: q$ k6 j
[此贴子已经被作者于2004-4-10 11:40:12编辑过]
- T- n6 N& o" c# |) E( L |