能力值:
( LV2,RANK:10 )
|
-
-
2 楼
ecx==[[esi+10]+4]
然后 esi==[esp+8] //对不对啊? 然后该怎么搞呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我也不是找过游戏的发包,,但有所不同.是按ctrl + F9 四次后跟踪到的.
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);
int bind(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
};
去MSDN里熟悉下这4个函数和结构体就知道了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
feierin兄 你说的这些结构体 我都知道 但是不知道怎么和OD联系起来用 能给点思路吗?
我也是跟了4次才跟到这个位置
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
ecx存的就是 send中 const char FAR *buf 的缓冲区地址 但是如何找这个地址是从哪儿来的呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
dd ecx地址
在查看
数据窗口里面的值
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
入栈的值就是不好找,得看很多东西.碰到PUSH啥的都得看看.
要不你就返回上一层,看看有多少个CALL的,然后对比堆栈里面那个位置的值,看看是哪个CALL后改变的,主要跟那个CALL估计就行.不过你跟到了也没啥用啊,你要是需要SEND的参数直接HOOK下应该比这个简单,如果是需要上面加密的话,应该在SEND函数的DATE缓冲区下内存断点,然后做同样的动作,看是谁写的缓冲区.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
紫宸 我能加你交流一下吗? 我的QQ 284457776 你的QQ是多少?
|
|
|