GO语言版鹅厂广告交易实时平台价格解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

    腾讯广告实时交易平台在向竞价胜出一方返回成交价的时候,先对价格进行TEA加密,再对密文进行BASE64编码,接收方先对BASE64解码,再对密文解密,双方事先约定密钥。鹅厂官网提供了C#、C++、JAVA和PHP的解密代码包,无奈原有平台都是基于GO语言的,虽然可以调C++的静态库(libdecrypt.a),但开发工具是JetBrains GoLand,跑在Windows 7下后期难以调试,在虚拟机下跑linux版严重影响开发效率,不得不尝试改写为GO语言直接调用来的酣畅淋漓,主要原因还是太穷买不起MacBook。

    原本觉得是个小活儿分分钟就可以搞定,没想到是个花了十二个工时的脏活累活,压根不是抄抄写写那么简单,一个坑接着一个坑。libdecrypt.a静态库在编译的时候没有加入调试信息完全无法跳入,jar倒是可以反编译看到源码,但编译器对部分中间变量做了优化处理,尤其对部分逻辑还原的带有强烈的个人感情色彩,IDEA和Java Decompiler两个工具自说自话,连被优化掉的变量命名都那么令人忍俊不禁。

// IntelliJ IDEA
if(nInBufLen % 8 == 0 && nInBufLen >= 16 && pKey.length == 16) {
    // 省略
}
// Java Decompiler
if ((nInBufLen % 8 != 0) || (nInBufLen < 16) || (pKey.length != 16)) {
    return null;
}

// IntelliJ IDEA
dest_buf[j] ^= pInBuf[var18 + j];
// Java Decompiler
int tmp250_249 = j;
byte[] tmp250_247 = dest_buf;
tmp250_247[tmp250_249] = ((byte)(tmp250_247[tmp250_249] ^ pInBuf[(nBufPos + j)]));
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    调试的时候问题百出,只能左手跑JetBrains GoLand,右手跑IntelliJ IDEA,两边同时Step Out | Into跟踪,检查输入输出发现问题再解决问题,数次打算放弃名正言顺直接调用C++库,毕竟项目进度摆在那里男人何苦为难自己,不过坚持不懈是我唯一拿得出手值得炫耀的品格了,况且没准这个问题或许就是最后一个问题了呢。

    罗里吧嗦说说遇到的坑吧!

    坑一:GO语言做<<操作的时候高位溢出部分舍弃,C\C++和JAVA补1,需要对0xffffffff取反以后再做位置或操作;

    坑二:GO语言“+”优先级高于“^”,在改写C\C++和JAVA表达式的时候需要加括号提升优先级,如:z -= int64(y << 4) + int64(c) ^ (y + sum ^ ((y >> 5) + int64(d)));

    坑三:已知a := []int{1, 2, 3, 4, 5, 6}; b := a[:],二者指向同一内存空间,没有达到b = (int[])a.clone()  的目的;

    坑四:GO语言没有“>>>”无符号右移运算符;

    坑五:GO语言[]byte取值范围0-255,与JAVA的byte[]对应的是[]int8;

    代码下载地址:https://gitee.com/gonglibin/codes/67lj5sv43bdegrm2ah81x21

相关文章
|
1月前
|
机器学习/深度学习 编解码 人工智能
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
随着人工智能、大数据和深度学习等领域的快速发展,GPU服务器的需求日益增长。阿里云的GPU服务器凭借强大的计算能力和灵活的资源配置,成为众多用户的首选。很多用户比较关心gpu云服务器的收费标准与活动价格情况,目前计算型gn6v实例云服务器一周价格为2138.27元/1周起,月付价格为3830.00元/1个月起;计算型gn7i实例云服务器一周价格为1793.30元/1周起,月付价格为3213.99元/1个月起;计算型 gn6i实例云服务器一周价格为942.11元/1周起,月付价格为1694.00元/1个月起。本文为大家整理汇总了gpu云服务器的最新收费标准与活动价格情况,以供参考。
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
|
2天前
阿里云服务器带宽价格参考:选择1M、3M、5M、10M宽带价格解析
阿里云服务器1M、3M、5M、10M宽带需要多少钱?单说阿里云服务器宽带多少钱,而不确定云服务器实例规格及cpu和内存配置的话,是没办法具体说多少钱的,因为云服务器的价格受很多因素影响。本文将详细解析阿里云服务器在选择1M、3M、5M、10M不同带宽下的价格差异,以供大家参考。
阿里云服务器带宽价格参考:选择1M、3M、5M、10M宽带价格解析
|
12天前
|
API 云计算 开发者
使用宜搭平台带来的便利:技术解析与实践
【9月更文第8天】随着企业信息化建设的不断深入,业务流程自动化的需求日益增长。宜搭平台作为一种高效的应用构建工具,为企业提供了快速搭建各类业务系统的可能。本文将探讨使用宜搭平台给企业和开发者带来的便利,并通过具体的代码示例展示其优势。
48 11
|
12天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
22天前
|
Prometheus 监控 Cloud Native
Prometheus 查询语言(PromQL):深入解析
【8月更文第29天】Prometheus 是一款开源的监控系统和时间序列数据库,广泛应用于各种系统的监控和告警。PromQL(Prometheus Query Language)是 Prometheus 用来查询和聚合时间序列数据的一种强大语言。本文将详细介绍 PromQL 的功能和语法,包括基本查询、向量操作、聚合函数等,并提供具体的代码示例。
28 2
|
6天前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
19 0
|
20天前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
80 0
|
20天前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
44 0
|
20天前
|
SQL 关系型数据库 MySQL
|
20天前
|
存储 安全 程序员

推荐镜像

更多