0%

前言

之前把gopeed项目升级到go1.21版本后,发现gomobile编译完后,在 flutter ios 端编译会报错,如下:

1
2
3
4
5
6
7
8
9
ld: Undefined symbols:
_res_9_nclose, referenced from:
_runtime.text in Libgopeed[arm64][2](go.o)
_res_9_ninit, referenced from:
_runtime.text in Libgopeed[arm64][2](go.o)
_res_9_nsearch, referenced from:
_runtime.text in Libgopeed[arm64][2](go.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)

然后我在gogithub里找到了这个issue,但是看到这个@bcmills哥们的回复感觉太麻烦了就用了后面@dreacot老哥的解决方案,编译的时候加上-tags netgo

1
gomobile bind -target=ios -tags netgo

然后就可以正常编译了,因为我自己没有ios设备,就没有测试过,按理说编译通过了应该就没问题了,然而最近 github 上好多用户都在反馈 ios 端无法正常使用,附上一个issue,看起来都是DNS解析的问题,起初以为是用户的网络问题,但是随着越来越多的用户反馈,这肯定就不是单纯的用个例问题了,于是又重新开始研究@bcmills哥们的解决方案。

阅读全文 »

前言

之前苦于github action不支持macOS arm架构,导致我为了打gopped macos包煞费苦心,我在 linux 上用xgo交叉编译出来macos arm64的动态库,然后在macOS x64上再打包成macos amd64的动态库,最后把两个架构的动态库合并成一个universal binary包,来同时支持IntelApple Silicon架构,如今github action终于支持macOS arm架构了,这下可以省去很多麻烦了。

阅读全文 »

不知道从什么时候开始,新写的文章阅读数量一直是1,一直没有去管,今天把问题解决了,记录下希望能帮到有同样问题的人。

问题原因

Next 中内置的leancloud_visitors插件是用leancloud存储功能来实现的,类似一个mongodb,不知道什么时候开始默认把权限变成了只读,所以每次更新统计数的时候都会报403权限问题,通过网络请求可以看到:

阅读全文 »

前言

前一段时间给我的开源下载器 Gopeed 实现了一套扩展系统,相关设计草案可以在这里查看,基于这套扩展系统可以很方便的通过javascript来实现一些定制化的功能,目前已经实现的扩展有:

然后重点是这些扩展也是全平台支持的,这意味着你可以在windowsmaclinuxandroidiosweb平台上安装和使用这些扩展,是不是很酷?接下来就来介绍下我是如何实现这套扩展系统的。

阅读全文 »

前言

经过近三年的迭代,Gopeed 终于迎来了我觉得比较满意的一个版本 v1.4.3,早在 proxyee-down 停更的时候,我就立下了一个flag要用 Golang 来重写一个下载器:

当时刚接触 Golang 就被深深吸引了,它优秀的网络编程、协程和交叉编译等特性,不经感叹这简直就是开发下载器的天选编程语言,于是就有了这个项目,刚开始的时候想着就做一个类似aria2这样的命令行工具,后来flutter异军突起,我就一直在调研用flutter来开发一个支持所有平台的下载器的可行性,一开始flutter desktop还不是很成熟,我甚至有考虑过用electron做桌面端,flutter做移动端,后来flutter 2.0发布之后,flutter desktop也正式发布了,测了下基本没啥大坑,觉得这是一个很好的机会,就开始把命令行工具改造成GUI,更方便用户使用,最终不出所望,通过 Golang + flutter 的组合,实现了一个支持所有平台的下载器。

相关链接:
官网 -> https://gopeed.com
Github -> https://github.com/GopeedLab/gopeed

阅读全文 »

转载申明

文章转载自互联网,如有侵权,请联系删除
本文仅作为学习交流,禁止用于非法用途

0x00 概述

针对某麦网部分演唱会门票仅能在 app 渠道抢票的问题,本文研究了 APK 的抢票接口并编写了抢票工具。本文介绍的顺序为环境搭建、抓包、trace 分析、接口参数获取、rpc 调用实现,以及最终的功能实现。通过阅读本文,你将学到反抓包技术破解、Frida hook、jadx apk 逆向技术,并能对淘系 APP 的运行逻辑有所了解。本文仅用于学习交流,严禁用于非法用途。

阅读全文 »

转载申明

文章转载自互联网,如有侵权,请联系删除
本文仅作为学习交流,禁止用于非法用途

1. 背景

阿里系当前采用的加密版本是 6.3,6.2 版本的大家几乎都解决了,6.3 的网上资料很少,这里讲讲 6.3 的解密过程

  1. 阿里系通用这一套加密算法,主要是 x-sign,x-sgext,x_mini_wua,x_umt 这四个加密参数,解决了其中一个 app,其他的比如淘 X,咸 X 等 app 都相差不大了,改改参数,或者替换不同的方法名称就行;
  2. 使用的是 frida-rpc 主动调用的方法(对加密算法解密的话,难度很高,我没做出来);
  3. 本次做的是阿里系的某生鲜平台 app, 仅作为学习交流,禁止用于商业使用
阅读全文 »

前言

最近想给gopeed的文档网站添加一个统计用户的访问量的功能,所以就想到了 firebase 的 analytics,但是在 vuepress 中整合 firebase 的 analytics 并不是很简单,所以就有了这篇文章。

阅读全文 »

前言

想在 wsl 上安装 flutter 跑一跑我的gopeed项目,在安装完 flutter 并设置好环境变量后,运行flutter doctor提示bash\r: No such file or directory,搜索了一番发现没有找到解决方案,于是自己摸索了一番,记录下来。

阅读全文 »

前言

在 Go 中,可以通过传递指针来改变函数外部变量的值,例如:

1
2
3
4
5
6
7
8
9
10
11
func main() {
var a int = 1
fmt.Println(a) // 1
change(&a,2)
fmt.Println(a) // 2
}

func change(a *int, b int) {
// 通过解引用来改变外部变量的值
*a = b
}

但是在某些情况下,我们可能需要传递interface{}来接收任意的指针变量,这时候就会遇到一个问题,interface{}类型声明的变量是不能直接赋值指针的,例如:

1
2
3
4
5
6
7
8
9
10
11
func main() {
var a int = 1
fmt.Println(a) // 1
change(&a,2)
fmt.Println(a) // 2
}

func change(a interface{},b interface{}) {
// 这一行会报错: invalid operation: cannot indirect a (variable of type interface{})
*a = b
}
阅读全文 »