我正在通过DECIPHERING MSGSTORE.DB.CRYPT5,新数据库WHATSAPP
和窃取WhatsApp更新。 br />
iv = bytearray([0x1E,0x39,0xF3,0x69,0xE9,0xD,0xB3,0x3A,0xA7,0x3B,0x44,0x2B,0xBB,0xB6,0xB0,0xB9])


这是完整的解密器:来自?我在ida快照上看不到它:



#1 楼

它似乎不在IDA快照上。您可能已经确定了设置初始key数组的程序流程的正确部分。并假设左侧部分应该与iv有关,但这不是事实。 iv是16个字节,IDA反汇编的左侧部分定义了24个字节,其长度与key相同。此外,图像的最上方还显示了一个if条件,该条件分支到设置键或设置左侧部分,因此这些分支彼此排斥。

在右边的键初始化之后部分,执行MD5计算,然后调用dword ptr eax+2AH,其中eax设置为[ebp+0],而ebp本身是堆栈中的头号项。参数放在栈顶-ebp,然后是edx=esp+40,然后是edx=esp+60。较早地将esp+60设置为以MD5_Init开头的调用结果的位置,显然,字符串是MD5编码的(MD5_Update(x, esp+60, strlen(esp+60))。这种模式-ebp是指向数据和函数的指针,而函数的第一个参数是ebp-暗示ebp是指向C ++类的指针。

总体而言,右侧是设置键的方法,调用一个类方法,处理MD5,然后调用另一个类方法。将其与python脚本进行比较,似乎第一个类方法执行python“从文件读取”,第二个方法进行XOR运算。 CVP.cipher调用稍后出现,未显示在IDA快照上,因此您看不到iv的设置方法。数据库的旧版本。 IDA快照的顶部显示“如果等于5,则执行正确的部分”;这可能是版本号,而较低的版本则分支到左侧;但是,IDA的反汇编未显示左侧分支的条件,因此这是猜测。