This media is not supported in your browser
VIEW IN TELEGRAM
这个 parser 不够好,但也足够用。只要能解析这个文件就可以了。
duangsuse::Echo
连这都不会的 duangsuse 总算写出来了... 🤔 不过是一个简单的 scannerless parser 而已就花了好多时间,这还能不能和任何一个懂一分钱设计模式的 Android 前端比呢... 希望哪天能回到 Android.
This media is not supported in your browser
VIEW IN TELEGRAM
HackingCoolApk.zip
31.7 KB
目前的工作目录 #CoolApk
Forwarded from Solidot
Delphi 二十四岁,释出 10.3.1
Borland 在 1995 年 2 月 14 日释出了 Delphi 1,二十四年后,收购 Borland 的 Embarcadero 公司为了庆祝这一纪念日释出了 Delphi 10.3 Rio Release 1(10.3.1)。对比 Delphi 1 和运行它的 Windows 3 操作系统与 Delphi 10.3.1 和 Windows 10,你可以看到软件在二十四里的巨大变化。Media
https://www.solidot.org/story?sid=59580
Borland 在 1995 年 2 月 14 日释出了 Delphi 1,二十四年后,收购 Borland 的 Embarcadero 公司为了庆祝这一纪念日释出了 Delphi 10.3 Rio Release 1(10.3.1)。对比 Delphi 1 和运行它的 Windows 3 操作系统与 Delphi 10.3.1 和 Windows 10,你可以看到软件在二十四里的巨大变化。Media
https://www.solidot.org/story?sid=59580
duangsuse::Echo
居然还要处理多 Annotation 的情况... 气死我了
我不要处理算了,这就作为另外一个类似 Jawa 的 DSL 算了 hhhh(迫真(跑
simple_parser.rb
5.4 KB
#Ruby 一个普通的 Scannerless Parser
duangsuse::Echo
simple_parser.rb
🤔 接下来 duangsuse 给大家做一瞬生成的现场的表演(良心) #sysadmin #Ruby #Parser #recommended
首先,按照上面的消息把 Retrofit 接口定义的 Java 代码整成这个 Parser 可以理解的格式
然后,执行命令
好魔法的设计模式,虽然感觉好像除了能完全记下来以外也没什么特别的牛逼... 但是不明觉历... 🤔
... 能用就好
首先,按照上面的消息把 Retrofit 接口定义的 Java 代码整成这个 Parser 可以理解的格式
然后,执行命令
ruby simple_parser.rb retrofit.java 1>result.json,导出成果到 JSON 文件ary = File.read('result.json').yield_self(&JSON.method(:parse))
接下来就是魔法的时候了(迫真)class Interface然后
attr_accessor :name, :method, :path, :args, :type
def initialize(json)
@method = json['method']
@path = json['path_template']
@name = json['fun']['name']
@args = json['fun']['args']
@type = json['fun']['type']
end
def codegen_method; return method == 'GET' ? '' : "#{method}@" end
def codegen_type_name; case type['name'] when 'List' then 'array' end; end
def codegen_type
if type.is_a?(String) then "-> #{type}" else "-> #{codegen_type_name}:#{type['inner']}" end
end
def codegen_args
args.map do |a|
web_param = a['name']
param = a['param']
type = a['type']
case a['ann']
when 'Query' then "#{param}:#{type}"
when 'Body' then "#{param}:#{type}-body"
end
end.join(', ')
end
def codegen
"#{codegen_method}#{name}(#{codegen_args})#{codegen_type}\n = #{path}"
end
end
puts ary.map(&Interface.method(:new)).map(&:codegen)吐嘈:还没有现在某些前端的设计模式魔法呢.... 如果前端再在自己的设计模式上加点东西,是不是就被完爆了呢?
好魔法的设计模式,虽然感觉好像除了能完全记下来以外也没什么特别的牛逼... 但是不明觉历... 🤔
... 能用就好
duangsuse::Echo
🤔 接下来 duangsuse 给大家做一瞬生成的现场的表演(良心) #sysadmin #Ruby #Parser #recommended 首先,按照上面的消息把 Retrofit 接口定义的 Java 代码整成这个 Parser 可以理解的格式 然后,执行命令 ruby simple_parser.rb retrofit.java 1>result.json,导出成果到 JSON 文件 ary = File.read('result.json').yield_self(&JSON.method(:parse))…
以上脚本只能部分自动化(而且 Spectrum 目前也没有兼容 MutliBody 的 API,因为 GeekApk 没有用到),要使用的话还是得自己修补一下才行...
不过也可以减小工作量了。
不过也可以减小工作量了。
This media is not supported in your browser
VIEW IN TELEGRAM
等到我写完 Spec 文件并且解决 API 客户端的兼容问题、下一步就该讨论怎么破解酷安的『官方』客户端口令验证保护,让它能在 Ruby Spectrum 的环境下可用
完全用 Ruby 还原校验码生成算法,这很困难(因为编译优化),我之前试过逆向一点小逻辑,都花了很长时间 #reveng
不过,x86 是个很通用的平台,我觉得可以拿 radare 修改汇编代码、对象文件属性给它 port 到一个相对宽泛一点的平台,然后每次用的时候直接用 v86.js 这样的虚拟机器执行,反正桌面端基本都是 x86,Android 端不是有 Token generator 么。
困难在于,如果类似的虚拟机比较『底层』,不是我想的那样只是基于宿主环境,作为一个『翻译』工具而工作,而是在没有操作系统支持的情况下工作,就会很困难。
还有个问题是,很多机器是 x86_64 的,和 x86 不完全兼容,当然有了虚拟机这个或许可以无视
完全用 Ruby 还原校验码生成算法,这很困难(因为编译优化),我之前试过逆向一点小逻辑,都花了很长时间 #reveng
不过,x86 是个很通用的平台,我觉得可以拿 radare 修改汇编代码、对象文件属性给它 port 到一个相对宽泛一点的平台,然后每次用的时候直接用 v86.js 这样的虚拟机器执行,反正桌面端基本都是 x86,Android 端不是有 Token generator 么。
困难在于,如果类似的虚拟机比较『底层』,不是我想的那样只是基于宿主环境,作为一个『翻译』工具而工作,而是在没有操作系统支持的情况下工作,就会很困难。
还有个问题是,很多机器是 x86_64 的,和 x86 不完全兼容,当然有了虚拟机这个或许可以无视