Example #1
0
    def recvInPackets(self,event):
        nPid = event.get_pid()
        oProcess = Process(nPid)

        if(self.bStartLog ==True):

            #RECV_LENGTH_ADDRESS = 0x0018FC04
            #RECV_ADDRESS = 0x0018FC10
            RECV_LENGTH_ADDRESS = 0x0018FC14
            RECV_ADDRESS = 0x0018FC20
            if(oProcess.is_address_readable(RECV_ADDRESS)):
                    address = oProcess.read_pointer(RECV_ADDRESS)
                    if(oProcess.is_address_readable(address)):
                        sLength = oProcess.read(RECV_LENGTH_ADDRESS,1)
                        nLength = int(toHex(sLength),16)
                        if(nLength>0):
                            file = open("config/recv.cfg", "r") 
                            hPacket = self.checkInPacket(address,oProcess,nLength)

                            if(self.bBlock==True):
                                if(len(self.lBlockRecv)>0):
                                    for pck in self.lBlockRecv:
                                        if(hPacket == pck):
                                            bytes = len(hPacket)/2
                                            packie = ""
                                            for i in range(0,bytes):
                                                packie +="00"
                                            print packie
                                            blockPacket = binascii.unhexlify(packie)
                                            oProcess.write(address,blockPacket)
                                            hPacket = self.checkInPacket(address,oProcess,nLength)
                            if(hPacket[0:4]=='2901'):
                                stackDbg.put("RCV|"+hPacket)
                                self.recvQuests(hPacket)
                            elif(hPacket[0:4]=='5401'): 
                                stackDbg.put("RCV|"+hPacket)
                                self.editQuests(hPacket)
                            elif(hPacket[0:2]=='36'):
                                stackDbg.put("RCV|"+hPacket)
                            else:
                                stackDbg.put("RCV|"+hPacket)
                        
        else:
            event.debug.dont_break_at(nPid,self.hRecvAddress)