以下是引用yzhlinux在2004-4-9 19:33:40的发言:1 v% r1 O, }7 r' D. ?
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 # w" W9 Z5 {, _
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。9 a1 ?% g4 R& G
我想楼主是想要一个搜索、修改二进制数据的代码吧?$ \( R1 S% t2 {( l
基本代码:
- Z$ p8 z7 I' p i) z! T+ G$ c9 ?) x$ r; S% E5 u' n
char s1[]="\x31\x00\x33\x00\x35";
m, _4 L* c9 h2 I5 F" o! Pchar s2[]="\x30\x00\x30\x00\x30";9 [0 l2 A- P# `
2 G. g* [' D V; @ Kfopen(rpcss.dll...)
1 M/ H/ [* [% V0 E. Zfread( buff...)
: G' P2 q& k [( K$ v" ?0 d# [/ f
( d/ }. p- j- k+ O, @char *p=memfind(buff,filesize,s1,sizeof(s1));
7 S0 h7 _0 G& B1 h qif(p) memcpy(p,s2,sizeof(s2));
( a u2 U$ U# Q5 s6 [, s7 E% M% J7 @
fwrite(buff...)* u! O3 t; E$ b& ?/ b/ m
fclose()' e# _- S2 t; F6 k ~! l
OK' @; t5 H, f- T
& s( R! s0 V: D0 E F+ O. \" T: K
% ]" Q5 ]; j; }# M/ j. p6 Y
//在buff中找sub数据
" C' @, a) e j: j5 M0 W$ U; L3 @char * memfind(char *buff,int buffsize,char *sub,int subsize)! l0 x3 ~2 b$ V" |5 _* P) K7 G( |
{
4 |8 e1 z/ O$ v char *p=buff;+ N1 p0 K* c5 j0 |5 a, _9 G, g" {0 [
while(p" O1 j+ ]8 X- F# Z" Y {
: P- b: d- x- r$ `2 z- k- ?1 }! S if(*p++!=*sub) continue;
- x" s3 l5 A% X# k if(!memcmp(--p,sub,subsize))3 N: N0 e0 h3 H; l" q" L) i
return p;* N# k( b6 l3 }$ ^
p++;
f5 T! s; l; c( Y }# Q( B a% K8 D `" F( {0 t
return NULL;4 Q) Z0 c9 j4 J- ]! J
}
3 h, b! q4 i# u8 ?0 M5 s7 X( g, L. [# c
- t$ t" F5 F; k# P# {5 o7 {/ g6 u) ]1 f5 Y) l
" K9 p1 }. v2 G& F! ^[此贴子已经被作者于2004-4-10 11:40:12编辑过] 3 Z/ @! J' K5 {3 A
|