|
关于flash逆向 已经找到发包位置 以及 数据 内容的组成
这段就是 把内容 写入到 socket 并发送 ,整个过程并不复杂
_loc2_ = new ByteArray();
_loc2_.writeInt(param1.dest);
_loc2_.writeInt(param1.cmd);
if(param1.value != null)
{
_loc6_ = JSON.stringify(param1.value);
_loc2_.writeUTFBytes(_loc6_);
}
_loc3_ = HashAlgorithms.fnvHash(_loc2_);
(_loc4_ = new ByteArray()).writeInt(param1.sn);
_loc4_.writeDouble(param1.sendSysTime);
_loc4_.writeInt(RequestType.JSON);
_loc4_.writeByte(0);
_loc4_.writeInt(_loc3_);
_loc4_.writeBytes(_loc2_);
_loc5_ = _loc4_.length;
this._socket.writeInt(this.PACKAGE_HEAD);
this._socket.writeInt(_loc5_);
this._socket.writeBytes(_loc4_,0,_loc5_);
this._socket.flush();
主要是这个 fnvHash-1a 我写到易中算出来对不上 _loc3_ = HashAlgorithms.fnvHash(_loc2_);
我先是修改.swf 并拦截替换原.swf,用 flash.external.ExternalInterface 调用js ,js代码就是 console.log(params); 输出到控制台 来进行调试
_loc2_ = {0,0,0,4,0,0,0,1}
经过对比 flash调用 js 输出的 跟抓包 是能对得上的
发现这个算出来 对不上,第一位 flash 输出 84696351 ,我将fnvHash算法改写到易中 第一位 输出 84696352
我又安装了flash cs6 将 fnvHash 复制到里面运行出来的结果也是跟易一样的
有没有大佬指点下 是哪里的问题
fnvHash函数 原本内容
public static function fnvHash(param1:ByteArray) : int
{
var _loc2_:int = 16777619;
var _loc3_:* = int(2166136261);
param1.position = 0;
var _loc4_:int = 0;
while(_loc4_ < param1.length)
{
_loc3_ = (_loc3_ ^ param1.readByte()) * _loc2_;
_loc4_++;
}
_loc3_ += _loc3_ << 13;
_loc3_ ^= _loc3_ >> 7;
_loc3_ += _loc3_ << 3;
_loc3_ ^= _loc3_ >> 17;
return _loc3_ + (_loc3_ << 5);
}
变量名 | 类 型 | 静态 | 数组 | 备 注 | _loc2_ | 整数型 | | | _loc3_ | 整数型 | | | _loc4_ | 整数型 | | |
_loc2_ = 16777619 _loc3_ = 2166136261 判断循环首 (_loc4_ < 取字节集长度 (bin )) _loc4_ = _loc4_ + 1 _loc3_ = 位异或 (_loc3_, 取字节集数据 (取字节集中间 (bin, _loc4_, 1 ), #整数型, )) × _loc2_ 调试输出 (_loc3_ )编辑框1. 加入文本 (到文本 (_loc3_ ) + #换行符 ) 判断循环尾 () _loc3_ = _loc3_ + 左移 (_loc3_, 13 )调试输出 (_loc3_ )编辑框1. 加入文本 (到文本 (_loc3_ ) + #换行符 )_loc3_ = 位异或 (_loc3_, 右移 (_loc3_, 7 )) 调试输出 (_loc3_ )编辑框1. 加入文本 (到文本 (_loc3_ ) + #换行符 )_loc3_ = _loc3_ + 左移 (_loc3_, 3 )调试输出 (_loc3_ )编辑框1. 加入文本 (到文本 (_loc3_ ) + #换行符 )_loc3_ = 位异或 (_loc3_, 右移 (_loc3_, 17 )) 调试输出 (_loc3_ )编辑框1. 加入文本 (到文本 (_loc3_ ) + #换行符 )_loc3_ = _loc3_ + 左移 (_loc3_, 5 )调试输出 (_loc3_ )编辑框1. 加入文本 (到文本 (_loc3_ ) + #换行符 )返回 (_loc3_ )
|
-
-
评分
-
查看全部评分
|