逛了一下当初学习编程的论讨

论坛:

www.cctry.com

看了一下论讨,看了一下新手提的问题,一下子回到大学的时候。当初也是一个新手,学习WINDWOS API, 纠结怎么徒手写windows 消息窗口, 学习怎么对话框,然后学习MFC界面开发,然后学习网络开发,然后学习开发网络变成,然后学习驱动编程等等。

这些年过去,感觉过去学习知识都在工作有所体现,刚工作的时候思考功能怎么实现,现在思考项目盈利点在哪里,市场怎么推广。人员怎么协调,技术难点在哪里,开发周期多久。

从现在看过去:术到道的一个过程而已,术的积累,才能到道这里,才能根据自身的环境,找出最优解。记得以前被一个技术总监面试,问我你的知识点怎么建立体系的,忘记当初我怎么回答的。

vc++ GetMessage 小知识

背景:

自己其实很少用到GetMessage,除了win32写窗口程序基本用不到,要么就用MFC去了,虽然老,但简单。

今天远程注入DLL,然后生成窗口,发现生成窗口会立马退出,后面发现自己没有写消息循环消息,但我发现我另外一个DLL 也没有写但可以正常运行。

 

过程:

于是google :

Type: HWND

A handle to the window whose messages are to be retrieved. The window must belong to the current thread.

简单说GetMessage  只能取当前线程的队列里面的消息。

我现在解析一下为什么2个DLL一个可以正常使用,另外一个不能正常使用,因为一个DLL 是被c# 程序直接加载运行,那么就是主线程中,因为c# 主线程有他自己消息循环,所以这个DLL就不用写了。另外一个DLL 是远程注入,那么单独一个线程,没有消息循环,所以必须自己写消息循环。。

 

结论:

只有现存代码才更好估计开发时间,不然很容易出现问题,导致自己开发时间拉长。

PC微信多开方案二

背景:

以前写了一篇文章有关PC微信多开的文章,那篇文章用的窗口hook 和释放句柄的方案,这种方案会导致全局多开,你只要打开我的程序,那么你点击微信的图标就可以无限多开。但我们开发产品的时候,一般会希望通过我们产品开一个。正好自己有这样子的需求,于是自己就有这篇文章。

思路:

采用新的方案: 远程DLL注入, HOOK CreateMutexW  替换 创建互斥体的名字(原来微信互斥体名字:_WeChat_App_Instance_Identity_Mutex_Name) 加上随机数字,你可以时间戳+随机数字。基本不会重复。

开发遇到问题:

1:  IAT HOOK 和 EAT HOOK的选择 (通过IDA和OD 分析发现直接调用,那么就是IAT HOOK)

2:没有现存IAT HOOK代码 ,GOOGLE  复制代码

3:CreateProcess 直接启动微信,IAT HOOK 发现没有任何效果(加日志,发现微信没有调用我的hook的CreateMutexW , 郁闷好久,思考HOOK时机不对,因为微信启动就会就调用CreateMutexW, 我启动再hook 没有保证在微信调用之前hook,于是CreateProcess 传入参数 直接挂起进程)

4:采用CreateProcess ,发现IAT HOOK挂起失败,快要奔溃了。 最后分析出2个问题,一个IAT HOOK的代码有问题,他hook的模块是GetModuleHandle(0); 他修改是主模块,不是自己想要的模块。于是改成GetModuleHandle(L”WeChatWin”); 感觉就要胜利,点击启动注入,妈蛋还是失败,感觉彻底绝望了。

5:想了好久不明白为什么?然后静下心来,仔细分析我挂起进程应该是WeChatWin都没有加载,所以我只能自己手动LoadLibrary(L”WeChatWin”); 然后hook就可以了。

 

结论:

虽然遇到很多问题,但只要思路是对的,总能找到合适解决方案。(这个方案我排除了窗口钩子,因为钩子导致每个窗口进程都加载DLL,虽然谈不上多么消耗性能,但感觉很怪,可能导致被别的程序提交上传到云端进行分析。。。)。

 

teamviwer 远程写代码 替代品

背景:
自己有几台电脑,有的时候一个项目在另外一个电脑(或者另外一台电脑配置好一些),就需要远程写代码,以前一直用teamviewer,但最近都出现弹出商用,本来想购买发现实在太贵,自己用的又不是那么多。

替代方案:
用国产远程控制向日葵,我自己买了永久,大概花费3000的样子,买的精英版本,送了一个开机棒(只能连接有线才可以,唤醒),速度基本不卡顿。写代码还是非常流畅,传送文件也比较方便。免费的速度貌似不错,我担心和别人共享网络,所以购买收费版本。不想担心不稳定

自己动手方案:
这个最近用了一下Frp 内网穿透工具,其实就是数据转发,但还是需要自己一台外网服务器,家用宽带一般不会给你分配独立IP,所以自己买一个便宜的服务器,速度就看外网服务器与你家里延迟,本质跟向日葵差不多的。
自己配置转发一下3389端口就可以了,但一般非技术人员可能不会配置,觉得太麻烦,还不与用免费或者收费

WebSocket资料整理

背景:

最近服务器与客户端交互要有任务系统,以前总喜欢用轮询,但这种含有太多的多余的HTPP字段,同时要反复的建立连接,对应性能来说肯定不是最优。如果开始研究websocket,整理一下资料,对于协议没有太多的说,就是规则,按照规则实现而已,我们用别人现在的库开发就可以了,原理了解一下就可以了。websocket对于我最大的好处就是不用自己切包,简单的就直接用json包起来就可以了,根本不用考虑大小字节。

 

整理:

https://zh.wikipedia.org/wiki/WebSocket(维基百科)

 

python库:websockets 里面有client和服务器例子

https://websockets.readthedocs.io/en/stable/intro.html

 

后面再补充,只是为了先占位,以后要多写文章,养成一个好的习惯。

服务器处理客户端上换行切割兼容性问题

背景:

用户可以上传文本,里面含有多条数据,每行一条数据。服务器解析数据然后处理数据。

问题;

windows 上传文件正常,mac电脑上传出现切割错误。

原因:

换行在windows 和 linux 和 mac 不统一

windows :\r\n  linux :\n   mac: 系统9之前是 \r  后面是\n

  同事说直接用

PHP  explode(EOL, XXXX) 进行对windows 用户上传切割会出现空格,所以改用explode(“\r\n”, xxxxx),这样子在windows 上传的用户确实没有问题,但mac 的是\n 那么就不会切割。我自己百度一下网上说处理换行要用explode(EOL, XXXX),如果你只是在自己电脑上测试,肯定没有问题,因为EOL对应是你自己电脑的换行,所以就没有问题。但我们放到服务器上面我们就要处理各种用户了。

解决方案:(前提是你的服务器是linux 以\n ,别的同理解决)

1: 如果含有\n 直接就把 \r 替换””.

2:如果不\n那么说明就是mac 9 以前的系统的用户,直接把\r 换成\n。

3:然后按照 explode(“\n”, xxxxx) 切割

 

 

项目感悟-2018年8月17日 19:59:16

自己做微信检测和微信域名防封项目一段时间了,产品目前越来越成熟,用户慢慢变多,认识很多玩互联网的人。渐渐明白技术很重要,也不重要,有些人一点技术不懂,但有自己套路,一样一个月赚10多W或者更多,但他们的局限也明显,不懂技术或者不认识懂技术的人,导致他们很多思路没法实现。

我自己认为做技术应该多动脑子,用自己的技术顺便赚点钱,然后赚钱同时又会对自己技术有要求,然后不断提升技术,然后又不断赚钱,这样良性循环下去。

 

广告时间:

微信域名检测和防封系统:

www.weixin136.com

www.weimice.com