开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 704|回复: 9
收起左侧

[求助] flash逆向,有没有大佬指点下

[复制链接]

结帖率:100% (38/38)
发表于 2023-10-12 18:53:46 | 显示全部楼层 |阅读模式   重庆市重庆市
关于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);  输出到控制台 来进行调试

11.jpg
44.jpg

66.png


_loc2_ = {0,0,0,4,0,0,0,1}
经过对比 flash调用 js 输出的 跟抓包 是能对得上的

发现这个算出来 对不上,第一位 flash 输出 84696351  ,我将fnvHash算法改写到易中 第一位 输出 84696352

我又安装了flash cs6 将 fnvHash 复制到里面运行出来的结果也是跟易一样的
77.jpg


有没有大佬指点下 是哪里的问题


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);
      }



  
子程序名返回值类型公开备 注
fnvHash1整数型 fnvHash
参数名类 型参考可空数组备 注
bin字节集
变量名类 型静态数组备 注
_loc2_整数型 
_loc3_整数型 
_loc4_整数型 
' 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_ = 16777619
_loc3_ = 2166136261
' 调试输出 (bin)
' while(_loc4_ < param1.length)
' {
' _loc3_ = (_loc3_ ^ param1.readByte()) * _loc2_;
' _loc4_++;
' }
判断循环首 (_loc4_ < 取字节集长度 (bin))
_loc4_ = _loc4_ + 1
' 调试输出 (_loc4_, 取字节集中间 (bin, _loc4_, 1), 取字节集数据 (取字节集中间 (bin, _loc4_, 1), #整数型, ))
_loc3_ = 位异或 (_loc3_, 取字节集数据 (取字节集中间 (bin, _loc4_, 1), #整数型, )) × _loc2_
调试输出 (_loc3_)
编辑框1.加入文本 (到文本 (_loc3_)#换行符 )
' _loc3_ = _loc3_ × _loc2_
' _loc3_ = 位异或 (_loc3_, 取字节集数据 (取字节集中间 (bin, _loc4_, 1), #整数型, ))
判断循环尾 ()
' _loc3_ += _loc3_ << 13;
' _loc3_ ^= _loc3_ >> 7;
' _loc3_ += _loc3_ << 3;
' _loc3_ ^= _loc3_ >> 17;
' return _loc3_ + (_loc3_ << 5);
_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_)


i支持库列表   支持库注释   
spec特殊功能支持库



33.png
55.jpg

评分

参与人数 1好评 +1 精币 +1 收起 理由
3awen + 1 + 1 谢谢你,我用V8能用,可以把你不用V8放在这里吗

查看全部评分

结帖率:77% (17/22)

签到天数: 1 天

发表于 2023-10-12 22:18:41 | 显示全部楼层   浙江省嘉兴市
哦,既然不复杂,但愿你能自己搞定
回复 支持 反对

使用道具 举报

结帖率:100% (38/38)

签到天数: 2 天

 楼主| 发表于 2023-10-12 22:41:40 | 显示全部楼层   重庆市重庆市
走一回 发表于 2023-10-12 22:18
哦,既然不复杂,但愿你能自己搞定

是还有什么东西没找到吗
回复 支持 反对

使用道具 举报

结帖率:100% (38/38)

签到天数: 2 天

 楼主| 发表于 2023-10-13 02:08:16 | 显示全部楼层   重庆市重庆市
走一回 发表于 2023-10-12 22:18
哦,既然不复杂,但愿你能自己搞定

我在flash cs6 中 将 var _loc3_:* = int(2166136261);  改成 var _loc3_:int = int(2166136261); 算出来结果是对得上的,就是调用了fnvHash

第一位 也就是  (2166136261 ^ 0) * 16777619 AS3 中输出 84696351,易语言中 调试输出 (到整数 (位异或 (2166136261, 0) × 16777619)) 输出  84696352
这个是什么情况,就是这个对不上
回复 支持 反对

使用道具 举报

结帖率:100% (38/38)

签到天数: 2 天

 楼主| 发表于 2023-10-20 13:26:23 | 显示全部楼层   重庆市重庆市
已解决

易语言长整数会把最低位的一个字节四舍五入

VX图片_20231020132432.png
回复 支持 反对

使用道具 举报

结帖率:50% (7/14)
发表于 2023-10-26 21:26:56 | 显示全部楼层   河南省商丘市
遇到了和楼主一样的情况,楼主是把所有乘法,都换成了大数乘法解决的吗?
回复 支持 反对

使用道具 举报

结帖率:100% (38/38)

签到天数: 2 天

 楼主| 发表于 2023-10-26 21:46:08 | 显示全部楼层   重庆市重庆市
剑轶 发表于 2023-10-26 21:26
遇到了和楼主一样的情况,楼主是把所有乘法,都换成了大数乘法解决的吗? ...

对                                      
回复 支持 反对

使用道具 举报

结帖率:50% (7/14)
发表于 2023-10-26 22:39:52 | 显示全部楼层   河南省商丘市

好的,明天我试试,跟你遇到的情况一模一样
回复 支持 反对

使用道具 举报

结帖率:97% (143/148)
发表于 2024-3-25 18:12:29 | 显示全部楼层   江苏省南通市
谢谢你,我用V8能用,可以把你不用V8放在这里吗
回复 支持 反对

使用道具 举报

结帖率:100% (38/38)

签到天数: 2 天

 楼主| 发表于 2024-3-25 18:19:44 | 显示全部楼层   重庆市重庆市
3awen 发表于 2024-3-25 18:12
谢谢你,我用V8能用,可以把你不用V8放在这里吗

自行添加精易模块
11.e (1011.1 KB, 下载次数: 1)

评分

参与人数 1好评 +1 精币 +2 收起 理由
3awen + 1 + 2 新技能已get√

查看全部评分

回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表