|
以下是引用yzhlinux在2004-4-9 19:33:40的发言:
4 g- P5 c7 @2 O6 B 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
6 }% ~. ?# e1 d) i如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
' B; G$ |) Q* m1 p( I3 b* j我想楼主是想要一个搜索、修改二进制数据的代码吧?! h0 Z* d3 c* B4 V( B- `
基本代码:
6 o3 T0 F1 B4 l' Y3 B9 X! k/ z& P% k: D1 @% g. Y5 @: h& C% ]% D
char s1[]="\x31\x00\x33\x00\x35";
/ p" C4 F2 T7 vchar s2[]="\x30\x00\x30\x00\x30";
1 G3 M1 o% G" ]1 T" r" `5 l, G, Q, r# F8 A
fopen(rpcss.dll...)
/ g) m7 s# C/ G+ ?; x2 afread( buff...). q8 F% _4 r2 n- ?' }+ W- A
, e- a4 q) J2 m4 z t xchar *p=memfind(buff,filesize,s1,sizeof(s1));( _! o) y# M( v( N( r, N
if(p) memcpy(p,s2,sizeof(s2));
9 n8 J' e9 @( y% l8 }. d( \$ [+ R0 K
fwrite(buff...)4 Q4 h6 o, N' n7 Q3 W% t
fclose()7 }9 {: T8 s7 T: u: t7 x2 N* H
OK, M9 f! U: k: q% P0 R, C4 W; R
4 e& K/ F7 d" K i3 Y/ l0 U
4 k% T) D7 n* l& }//在buff中找sub数据2 x& b" b4 m T( [, ~0 }2 A# B- X
char * memfind(char *buff,int buffsize,char *sub,int subsize)8 l* Y# E7 ?' {$ m& P% Q
{' D, S9 Y; k1 q: b) |
char *p=buff;
: b: `6 F6 n9 z0 l, H$ P while(p+ w& W2 G3 g0 S4 W5 c, x5 a# ~ {
) v7 o( j% Z3 Z: I% m6 ^' X% Q if(*p++!=*sub) continue;
+ e! q; G, M# x9 o, ^/ M if(!memcmp(--p,sub,subsize))/ Q+ k' r2 F/ W- M7 q
return p;3 \( g. S& }' f2 @% u% i
p++;4 O1 f4 G( o4 K9 \$ L) U. K
}- t7 x4 _) k+ {+ I) ?
return NULL;
$ k3 y9 s2 c8 _4 j( C m}6 z( H' X* X$ U
p- P5 _' N, `' [6 F
! R" j' B$ }. t! Z& ]1 T# u- v# a
, @( T7 A' P/ E
/ e4 I; n! _3 n; k0 N' j- n[此贴子已经被作者于2004-4-10 11:40:12编辑过]
6 a! P1 x, L; W9 g0 z2 p8 G |
|