代码:
mov findaddr, 401000 mov findover, findaddr add findover, 8C7000 START: cmp findaddr, findover jae END findop findaddr, #8B??# cmp $RESULT, 0 je END mov findaddr, $RESULT add findaddr, 2 cmp [findaddr], 0118 je FIND118 cmp [findaddr], 05F8 je FIND5F8 jmp START FIND118: mov opcode, findaddr sub opcode, 2 eval "{opcode} MOV E?X,DWORD PTR DS:[E?X+118]" log $RESULT jmp START FIND5F8: mov opcode, findaddr sub opcode, 2 eval "{opcode} MOV E?X,DWORD PTR DS:[E?X+5F8]" log $RESULT jmp START END: ret
call XXXXXXXX 这里通常是调用 一个配置 比如 FConf->SocketCount() 的 FConf
MOV MCX, EAX
MOV EAX, DWORD PTR DS:[ECX+118] 是读取 socket 连接数的
MOV EDX, DWORD PTR DS:[ECX+5F8] 是读取 在线用户数的
SUB EAX, EDX
有些软件为了限制你使用人数,会做分别读取这2个变量,然后相减,再判断其活动数量,
再调用 closeSocket 而不是直接判断 socket 的总数, 用这个脚本可以找到其所有读取
这2个内存的位置,然后判断其功能,就可以去掉限制,当然还有其他目的。
脚本很简单,高手飘过