以下是引用yzhlinux在2004-4-9 19:33:40的发言:
( l, v1 W/ I" R- S1 O 难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。
& F3 U' h& l' l5 i" V4 V如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。
4 T1 S. M8 C; K/ c* b, h我想楼主是想要一个搜索、修改二进制数据的代码吧?2 w+ @) W5 B; D% \4 G
基本代码:, l0 y/ A( X5 w ~4 g* @
$ E, ]0 q! \% o1 D: M! d- p( f& n
char s1[]="\x31\x00\x33\x00\x35";7 M) L9 ?: ^! T S% i& p1 \
char s2[]="\x30\x00\x30\x00\x30";
& o- F" Z& [% G& P8 n
6 ?* ^, R1 O' T* cfopen(rpcss.dll...)
. j4 z& e" L* H2 ~) Ufread( buff...)0 R7 L/ D3 a+ x6 J& q
+ Q1 b* b3 Z" o3 r' u
char *p=memfind(buff,filesize,s1,sizeof(s1));
( t; B# n' H( [' b) z2 @. aif(p) memcpy(p,s2,sizeof(s2));' b7 c8 V1 I5 ?
* o! z3 W$ `( I! B! A
fwrite(buff...)
% Q7 a4 r1 J, Q+ @% Wfclose()
/ M3 @9 o0 y! P, n5 ?* M. QOK1 O; f& U4 { C p \5 D" g6 a. D. [
/ N% q- O) T; h4 A0 P3 U( l
a9 _' |" U- A) j7 _' W//在buff中找sub数据
7 m1 G; s1 d) b8 s& \' i/ Nchar * memfind(char *buff,int buffsize,char *sub,int subsize)" j: m- @6 b" S. |3 ]# s p2 T; F
{" H7 b# J! ~- H+ Q5 y; {% {
char *p=buff;$ k( {" ?* Z$ |& Y6 z
while(p* E7 X# ?) `' x% K7 \ j9 ? o {
0 o% S3 }% j! `4 c6 J) R1 G if(*p++!=*sub) continue;# b4 Z* `( o) B2 {, i
if(!memcmp(--p,sub,subsize))- d# s0 j) r ?/ q! g; P
return p; b: K" _5 d6 A# N
p++;
4 ~7 `* D9 }5 ?1 _3 T }
7 z1 h/ e0 L# F' L1 n, p, \ return NULL;; c0 m2 M+ V3 Z+ M
}
/ D- ]. C8 C$ c7 Z" d4 e6 \1 R* n1 p, ~% O0 W% V1 p
7 r* Q6 f! Z8 J# `# u1 B) y- D" p' G0 ~; k. W. @4 X4 V( U
( ?6 m! j1 w. Y, |2 n e6 }; I
[此贴子已经被作者于2004-4-10 11:40:12编辑过] 4 w$ W/ N+ @4 b$ W A7 J) {
|