以下是引用yzhlinux在2004-4-9 19:33:40的发言:* ~& F" e0 K7 b/ ]: k; }
难点不在修改她(字符操作而已),难点在改变成功改变系统文件上(window2000是自动检测的)。 . s* _3 E. Y- h! n+ o0 `) A( N
如果要修改受系统保护的文件,要考虑的地方就多了。可能rpcss.dll还不是受系统保护的文件。- J# G) \: d& M% l: L! Q8 i3 J3 q
我想楼主是想要一个搜索、修改二进制数据的代码吧?
* K1 p" |; c$ i9 ~- {) {基本代码:
4 n; y) W8 B; ~# a i. e8 E4 ~( v# w p
char s1[]="\x31\x00\x33\x00\x35";# o9 D# m e- d+ l8 \
char s2[]="\x30\x00\x30\x00\x30";/ G' _/ Q& x8 L, C# P
: B' p1 Q$ K( O: j9 ]fopen(rpcss.dll...)
5 l# L6 a. P, K, R5 H7 afread( buff...)
+ Z+ V. N, }, B% Y2 D9 [) |5 n! Y% c* s, }# v1 [
char *p=memfind(buff,filesize,s1,sizeof(s1));
0 \1 c. ]+ m1 A1 _if(p) memcpy(p,s2,sizeof(s2));
: O2 C6 K% x( z4 b; a( }
6 P3 ^+ A' [! {( Efwrite(buff...)! O. _2 b' x8 w
fclose()
2 S, D m6 i" I, _* mOK5 e/ H( W# t' o. t5 S: Q0 K# d
/ V+ i: W3 q+ a ?& Y) X9 t( H/ z
( D# z h: F# q4 @+ i% ~5 G/ I
//在buff中找sub数据
$ D0 z1 h1 R2 k. Echar * memfind(char *buff,int buffsize,char *sub,int subsize)
2 b" k8 c2 a. I9 [7 }- f: ` W' @{
, ?/ u3 c9 g! m1 X1 _ char *p=buff;
" \! L1 R2 p" E; k. q+ E* a while(p2 E/ D- k+ [+ \ {
$ h- K! F' V8 `5 Y. ] if(*p++!=*sub) continue;9 i( e' }3 a" F( t: w* [9 t
if(!memcmp(--p,sub,subsize))( Y6 B0 c" \9 X2 W0 c/ F* B
return p;
& ]& X/ O7 S. G3 Z p++;
" t6 ]6 Q6 z/ Z: r5 G/ _/ b }
" P2 H5 t$ y: ~2 I return NULL;
" W+ P/ g7 Q9 g6 l}
6 Y* [& d2 i; \1 ]1 S
" A6 I. i4 h. X3 h }. Y2 k# \1 F
3 |% \% F5 \& \5 B* T# v& E4 F! w
5 ]# q5 I8 ]5 O[此贴子已经被作者于2004-4-10 11:40:12编辑过]
: }& C' S! Y( y$ z5 ~ |