以下是引用yzhlinux在2004-4-9 19:33:40的发言:
7 b+ o5 m, ?4 I' E4 ?/ \9 b 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
1 L" \1 v* h \6 Y/ I: E如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
, M7 G- s6 K! E* k我想楼主是想要一个搜索、修改二进制数据的代码吧?$ S: x) f. B% o; ]
基本代码:
+ j; p/ J) V: n
' Z/ N% Z& P5 W- Achar s1[]="\x31\x00\x33\x00\x35";* h& v% R( z8 ]5 m+ N
char s2[]="\x30\x00\x30\x00\x30";/ o" D# i* D, m8 X+ i8 ?
p0 f* F( n$ z9 n
fopen(rpcss.dll...)1 k5 O" J2 [$ @% h" Y
fread( buff...)
, Y' t5 ^! g6 V, B! R- d1 Y4 |% [
" W. I) E4 L: T: O8 {' Mchar *p=memfind(buff,filesize,s1,sizeof(s1));
$ y3 }9 P+ }! @ Z$ Q- s" H, z& }if(p) memcpy(p,s2,sizeof(s2));
- P) ^$ K, O0 B8 `
- m2 C( o# G* T! r/ Efwrite(buff...)
2 b. |$ N- K- L# m, K6 Lfclose()) d' h4 {# W1 u+ K% k, M6 D+ X
OK; _: W* i0 x- q* K+ b
* V$ K1 q; M: W- l7 X! a
& {8 a( i- c( ?! w//在buff中找sub数据
0 @) Z* X( l2 L3 E# [char * memfind(char *buff,int buffsize,char *sub,int subsize)
( Z) X3 C) {& w{# N. G1 }$ b7 M6 ~* m; D
char *p=buff;
! { c$ W2 y. s) i. m) ? while(p# C& K2 {- U" G" _& t
{
$ I. J# B, m' x/ T+ t if(*p++!=*sub) continue;* H+ V% }- F* m+ L
if(!memcmp(--p,sub,subsize))
0 \8 n9 o; A1 G' o return p;
4 R y) H6 g3 C: g) X1 ?3 g p++;
( S" j/ _2 _+ q8 Z+ }- M }
( @' U7 t2 o$ q0 |3 o; T8 L/ K7 o return NULL;% @" R( y6 H* z* ]
}
3 ?" }3 B5 U# A+ J ]* t+ n: W( I1 H$ U4 E, B! {8 B# I8 w$ a$ u
- R& d1 [( G0 [/ B. v0 G2 A/ s
7 s2 c( c1 X1 E' u$ G; h8 i% S, J. v6 J
[此贴子已经被作者于2004-4-10 11:40:12编辑过]
/ p9 U' l6 H+ D |