以下是引用yzhlinux在2004-4-9 19:33:40的发言:
4 n7 [( s8 O: L! `4 ` 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
5 Q0 H) b+ ]& ?3 z7 S如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
& x, N* U# ]) g; \: R6 k ?# O7 n我想楼主是想要一个搜索、修改二进制数据的代码吧?
6 L9 m/ R% W9 {! k- m基本代码:" S' p, d) j- X- P+ l, G# D5 d, s
' x1 \* g* z& R5 E; J& F
char s1[]="\x31\x00\x33\x00\x35";; l2 ?! e* B+ Z; o d( A8 X
char s2[]="\x30\x00\x30\x00\x30";
: D: Q. R& m" F0 [) c7 ^
: x' l1 V0 e+ M5 q- V4 o. C$ efopen(rpcss.dll...)$ s1 ]/ }3 U+ _; l7 a
fread( buff...)
& `, ]! [% Z4 `1 R( O; I% ]2 l) z( J; @( X: L F
char *p=memfind(buff,filesize,s1,sizeof(s1));
O; d8 ]! M% n2 b/ vif(p) memcpy(p,s2,sizeof(s2));
& v! C: C5 m" Y6 q% W) _1 ^2 E8 h% N9 l' t4 e8 D2 O
fwrite(buff...) x$ f: G1 c3 }) [7 z
fclose()
& v. l) r7 M6 j0 ^% O! O8 POK4 y% J' o. n) _8 x/ ~
! q7 z# c$ n- Q0 v5 X
4 l1 P$ q! z4 E8 j, G. o
//在buff中找sub数据
. C: N8 W% s" D! m9 Achar * memfind(char *buff,int buffsize,char *sub,int subsize)
- E# q- H' v( W4 G! Y& h/ @{
* ?/ ~) @0 y* x) p char *p=buff;
) T9 g( D$ F, D$ r8 | while(p7 G4 w" ~2 [/ C3 Q7 t, ~
{
/ `" U' E2 f& a+ a if(*p++!=*sub) continue;
$ {7 J T( L) H3 a, } if(!memcmp(--p,sub,subsize))! C9 N( L x, r5 W' e
return p;* q/ @: `! B6 r/ t
p++;4 f% r- }" ?+ @7 q' y
}" Z9 E! C9 P7 {, l
return NULL;
, Q) [* C1 o+ ?/ U/ o}
/ `0 o$ }' H; l! \3 L0 c- W. _% k( s5 z
& n: f9 r1 z+ l" R9 f: R# L( l2 E
3 e% B% Q2 b" C# ]5 e
( Q7 z/ q: `: J! A6 w[此贴子已经被作者于2004-4-10 11:40:12编辑过]
; A) Y& S7 C* ^; z( M7 g |