简书链接:逆向学习法无源码通过两个源码比较研究路由器2天搞定ngrok离线插件开发
文章字数:1622,阅读全文大约需要6分钟
首先,我没有多少linux,基础,对路由器 linux底层还是缺少系统的理解的,那么我这种程序员初次玩这个路由器系统是怎么个学习法呢?
对linux shell这些的脚本也不是很了解,
作为插件开发,如果你是设计者,设计一个插件 提供一个网页,网页点击后是不是应该交互调用具体的真实shell命令,
我虽然没有开发过路由器脚本,但是我对安卓的xposed插件,以及架构 机器人js插件大概有一定的了解,当js脚本里面执行原生代码我这边会hook执行具体的逻辑,那么 我想这大概也是一样的.

官方所有源码下载地址
https://codeload.github.com/koolshare/armsoft/zip/refs/heads/master
离线安装需要taz包,window可以用7z打包成tar,然而再次打包gzip.就可以了.

定位里面两个插件的源码,发现里面的规范写法 区别,就是从模板代码里面修改install_now()
image.png

前者是开发一个内网穿透的工具 后者只是一个小公举,所以前者通常会启动一个进程,以此卸载的时候也需要killall 进程
image.png
l另外里面的文件目录存放结构大概得出一下结论
基本上也是按模块名来起名的.
网页 配置文件会放在固定的文件夹下,

image.png

从这文件看,大概就是知道请求路由器自身的域名/_api 发送postData从而执行对应脚本,.

也就是说在_api这个服务器会执行一些固定的执行脚本操作.
初次尝试
image.png

image.png

模拟真实请求
设置Cookie和user-agent
image.png

结果

image.png
最后我做了一个修改版的ngrok 内网映射插件但是上传后提示插件里面找不到web文件夹,于是只能根据源码进行分析了
根据抓包分析得出文件名,然后linux查找文件 ,

image.png

image.png

通过比对两个插件的源码,知道大概应该改什么?

之后拷贝一份frp ,因为frp 和,ngrok,内网穿透程序相似,

大概把里面的结构改一下
比对发现其实大部分内容是高度一致的,只有部分不一样.

image.png
大概熟悉了下后
拷贝一份frp
至于里面怎么打包的结构,
需要抓包分析,
根据错误提示查找定位到文件
image.png

路由器 使用 sftp,或者ssh 拷贝下来,
怎么找到文件呢?

linux命令
ls find -name "*.asp"
额,这个上面图片已经展示过了
根据提示分析为啥错了,之前我是没看懂linux命令

image.png

这句话反人类-a,虽然我熟悉很多种语言开发,但是从没看到这么写的, 这么简单的一个字-a 没有学过就不懂了

后面查阅才知道
-a 等于&&
-o等于||
笔记
image.png

那么这个文件没找到是啥问题呢,打包我是选择ngrok文件夹打包的那么解压后是ngrok/webs/Module_ngrok.asp 理论上没错,后面发现改名后没有把frp.asp改名为ngrok.asp,改完之后重新打包 ,终于成功了.
最后附开发完成的截图

image.png
image.png

image.png

研究2天时间,从星期天整天到星期一晚上以及早上12点…
还增加了日志实时显示功能,frpc的插件源码可能压根没那么强大,所以我借鉴另外一个插件实现了实时执行日志的监听. 但是ngrok命令执行实际上不是直接管道显示的,怎么说呢 就是echo "aa">file 这种方法只能dump到刚开始闪现的东西,反正怎么解决这个思路我不会.

所以大概实现思路可能只能sleep几秒 然后访问一个web inteface 也就是127.0.0.1:4040 取出访问内容来大致判断是否成功,

image.png

最后我发现jffs分区这种东西空间不足,于是折腾用u盘代替 ,
image.png