搜索
bottom↓
回复: 25

求通过C#应用软件 反推串口通信协议的方法

[复制链接]

出0入0汤圆

发表于 2020-6-29 15:46:37 | 显示全部楼层 |阅读模式
我们有个客户要求开发一个3G主板方案去适配1个上位机软件,但是他没有通讯协议,也没有以前的主板。
目前能破解数据下载的协议,但是数据上传到上位机软件的协议分析不出来,所以想请教有没有把EXE文件转化为C#工程的方法呢,
虽然C#我一窍不通,但是最起码有源文件能分析下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2020-6-29 15:50:26 来自手机 | 显示全部楼层
Exe逆向,c#很容易得到源码

出0入0汤圆

 楼主| 发表于 2020-6-29 16:01:41 | 显示全部楼层
sunbest80 发表于 2020-6-29 15:50
Exe逆向,c#很容易得到源码

有什么方法呢,请赐教!

出0入0汤圆

发表于 2020-6-29 16:15:00 | 显示全部楼层
这个没有做加壳和混淆处理,直接 ILSpy 打开,然后 File -> Save Code... 就有 VS 工程了

https://github.com/icsharpcode/ILSpy/releases

出0入0汤圆

 楼主| 发表于 2020-6-29 16:42:06 | 显示全部楼层
wudicgi 发表于 2020-6-29 16:15
这个没有做加壳和混淆处理,直接 ILSpy 打开,然后 File -> Save Code... 就有 VS 工程了

https://github. ...

谢谢!

出0入0汤圆

 楼主| 发表于 2020-6-29 17:00:12 | 显示全部楼层
wudicgi 发表于 2020-6-29 16:15
这个没有做加壳和混淆处理,直接 ILSpy 打开,然后 File -> Save Code... 就有 VS 工程了

https://github. ...

通过ILSpy生成了C#工程,非常感谢!
请问你会看c#代码吗?我能找到写数据的协议,但是没找到读数据的协议,
串口接收数据解析部分找不到,能帮忙看下吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-6-29 17:30:23 | 显示全部楼层
stm32_bldc 发表于 2020-6-29 17:00
通过ILSpy生成了C#工程,非常感谢!
请问你会看c#代码吗?我能找到写数据的协议,但是没找到读数据的协议 ...

找到 serialPort 的 DataReceived 事件   就是数据接收事件

出0入0汤圆

发表于 2020-6-29 18:17:44 | 显示全部楼层
看代码 只要下位机发送数据带 “\r\n”回车换行符 就可以显示了。

出0入4汤圆

发表于 2020-6-29 19:17:24 | 显示全部楼层
发送一次"ecomvm\r\n"
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3.         bool flag = this.serialPort.IsOpen();
  4.         if (flag)
  5.         {
  6.                 string text = "ecomvm\r\n";
  7.                 this.serialPort.SendLine(text);
  8.                 this.UpdateDataWindow(text);
  9.         }
  10.         else
  11.         {
  12.                 this.UpdateDataWindow("Open COM port first\r\n");
  13.         }
  14. }
复制代码

剩下的就是串口助手一样的读到什么显示什么
  1. private void ReceivedDataTimerTick(object sender, EventArgs e)
  2. {
  3.         bool flag = this.dataReady;
  4.         if (flag)
  5.         {
  6.                 this.dataReady = false;
  7.                 this.UpdateDataWindow(this.receivedData);
  8.         }
  9. }
  10. private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  11. {
  12.         bool flag = !this.comPort.IsOpen;
  13.         if (!flag)
  14.         {
  15.                 string text = string.Empty;
  16.                 try
  17.                 {
  18.                         text = this.comPort.ReadLine();
  19.                         text += "\n";
  20.                         bool flag2 = this.onMessageReceived != null;
  21.                         if (flag2)
  22.                         {
  23.                                 this.onMessageReceived(text);
  24.                         }
  25.                 }
  26.                 catch (Exception ex)
  27.                 {
  28.                         Debug.Print(ex.Message);
  29.                 }
  30.         }
  31. }
复制代码

出20入186汤圆

发表于 2020-6-29 19:38:18 | 显示全部楼层
楼主程序发给我,我帮你转成C#源码工程

出0入0汤圆

 楼主| 发表于 2020-6-30 08:35:21 | 显示全部楼层
谢谢大家!

出0入0汤圆

 楼主| 发表于 2020-6-30 08:40:39 | 显示全部楼层
sniper.q 发表于 2020-6-29 19:17
发送一次"ecomvm\r\n"

剩下的就是串口助手一样的读到什么显示什么

其实发送一次"ecomvm\r\n",接收到的数据并没有填入界面里面去。。。。只是简单的打印出来,谢谢大家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-6-30 09:22:09 | 显示全部楼层
C#反编译这么容易吗

出350入477汤圆

发表于 2020-6-30 12:23:47 来自手机 | 显示全部楼层
19504643 发表于 2020-6-30 09:22
C#反编译这么容易吗

哈哈,C#程序相当于都免费自代源码。
如果有小开发商想做C#程序卖钱,一定要当心了

出0入0汤圆

发表于 2020-6-30 17:34:20 | 显示全部楼层
有串口,可以AccessPort监控串口收发的数据

出0入0汤圆

发表于 2020-7-1 10:00:37 | 显示全部楼层
学习了,收藏备用

出0入0汤圆

发表于 2020-7-1 10:03:58 来自手机 | 显示全部楼层
redroof 发表于 2020-6-30 12:23
哈哈,C#程序相当于都免费自代源码。
如果有小开发商想做C#程序卖钱,一定要当心了 ...

那……假如用QT呢?

出0入0汤圆

发表于 2020-7-1 10:30:07 | 显示全部楼层
redroof 发表于 2020-6-30 12:23
哈哈,C#程序相当于都免费自代源码。
如果有小开发商想做C#程序卖钱,一定要当心了 ...


听你们这么说,都不敢用c#开发程序了!! 破解成本这么低的吗??

出350入477汤圆

发表于 2020-7-1 10:44:51 | 显示全部楼层
lmt50211 发表于 2020-7-1 10:30
听你们这么说,都不敢用c#开发程序了!! 破解成本这么低的吗??

通常无需破解,因为反编译一下可以直接得到源码,可读性很好,感觉连局部变量的名字都保留了。。。。
个人很感谢西门子的博途软件就是.net写的,我们OPCServer之前有个地方跟它匹配不上(跟其他的组态软件,或者跟老一点的WINCC完全没问题)。调试了很久都无解,烦死了。
最终解决问题的方法是反编译了他的OPC驱动程序
看到它调用了某个很少用的接口,他内部怎么做的一清二楚,然后我按他需要的样子改了就好了

如果他不是.net写的,估计就没办法了。。。。。
这种大厂给你源代码还是有好处的,反正不怕你抄。如果你跟他配合出现问题了,方便你调试。

他出错了会显示出精确的某个类,IL偏移量多少。
你反汇编以后就可以直接定位到C#代码的出错的那一行。

出350入477汤圆

发表于 2020-7-1 11:04:38 | 显示全部楼层
lmt50211 发表于 2020-7-1 10:30
听你们这么说,都不敢用c#开发程序了!! 破解成本这么低的吗??

足够大的程序,比如西门子博途,安装程序15G,装完了整个虚拟机超过50G,这种程序可以放心的用C#去写,谁爱反汇编就去反汇编吧。
合法用户可以随便反汇编它的某个模块来调试跟自己的接口。
想抄袭的人,他这个代码量你几辈子也抄不完。。。

出0入0汤圆

发表于 2020-7-1 11:11:00 | 显示全部楼层
lmt50211 发表于 2020-7-1 10:30
听你们这么说,都不敢用c#开发程序了!! 破解成本这么低的吗??

可以做一些混淆处理,提高一下反编译和查看代码的难度

但是加壳就不好办了,我之前考虑过用 Themida 加壳,但杀毒软件很容易报毒,不光是 360,其他一些比较正常的杀毒软件也容易报
就连 C/C++ 程序不加壳仅做虚拟化处理都很容易报毒

有钱的话貌似可以给软件加个数字签名,可能管用

出350入477汤圆

发表于 2020-7-1 15:35:43 | 显示全部楼层
wudicgi 发表于 2020-7-1 11:11
可以做一些混淆处理,提高一下反编译和查看代码的难度

但是加壳就不好办了,我之前考虑过用 Themida 加 ...

所以想让源代码保密的地方,就别用C#了。。。
刚才我去下载了一个最新的ilspy,发现已经可以正确的反编译async了,之前我用过的版本遇到新版C#的async关键字会无法识别
从现在起,C#就彻底没有秘密可言了,相当于一个高级的脚本语言了,给人发可执行程序就相当于发源码。。。。。
幸亏我自己不用C#~~

出0入0汤圆

发表于 2020-7-1 16:27:47 | 显示全部楼层
学习了,涨知识了,最近还想用C#开发,这么简单就能破解的话,还是用之前的软件开发吧。

出350入477汤圆

发表于 2020-7-1 18:52:24 来自手机 | 显示全部楼层
txl216 发表于 2020-7-1 16:27
学习了,涨知识了,最近还想用C#开发,这么简单就能破解的话,还是用之前的软件开发吧。 ...

如果是写网页系统就无所谓,反正服务器是你的,用户最多的php还是完全源码呢。
如果是写桌面程序,这一点就很不好了。用户可以直接得到你的源码,想怎么做都行。

出350入477汤圆

发表于 2020-7-1 18:55:50 来自手机 | 显示全部楼层
redroof 发表于 2020-7-1 10:44
通常无需破解,因为反编译一下可以直接得到源码,可读性很好,感觉连局部变量的名字都保留了。。。。
个 ...

想起我们小时候,电视机的说明书里都直接附带电路图的,防止你坏了不好修。
现在用.net写的程序也是这样。。。

出0入0汤圆

发表于 2020-7-2 02:17:10 | 显示全部楼层
QT按理不容易被反汇编,它是C++语言开发的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-28 11:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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