乱new对象的真是够了

要不是在Surface Pro 2上肝了段时间的船还真不会注意到这点,KCV每次回到母港的时候CPU占用基本上是飞起来的。

然后凭着直觉找到了这些东西:

1.Grabacr07.KanColleWrapper/Itemyard.cs
97行void Update(kcsapi_slotitem[])
103行void Update(kcsapi_useitem[])

2.Grabacr07.KanColleWrapper/Models/Ship.cs
394行void Update(kcsapi_ship2)

3.Grabacr07.KanColleWrapper/Organization.cs
198行void Update(kcsapi_ship2[])

这4块地方每次回母港就会new一堆对象,然后在Gen1或者Gen2(长期活跃对象)堆里产生一堆垃圾。

继续阅读

【逗逼人干逗逼事】Cassandra作为RADIUS的认证和计费后端,可行?

总之就是闲的没事干,源码有爱自取

想法是所有的接入点上都运行RADIUS服务器和数据库,消除所有的单点故障可能。

Cassandra作为分布式的NoSQL数据库(其实是个DHT网络)应该是具有相当好的扩展性。

不过Cassandra不保证consistency,Simultaneous-Use的限制恐怕不能保证。

闲扯

Sigh……

嗯于是熟悉的人都知道我暑假去干啥了(http://www.jsjds.org/),嘛拿了个三等奖(读作“进了决赛所以给你个名誉奖”)

前两天的时候吧,例行的维护老师自己的网站的服务器(没错是我在维护不要吐槽),发现了我们学校的另外一件参赛作品,是网站设计类的。

抱着玩玩的心态去戳了后台登陆然后果断的在用户名和密码里各打了个单引号,结果你懂的……

(Sigh……x1)

然后继续抱着玩玩的心态去发表了一篇评论,内容你们也猜得到的,<script>//blah blah blah</script>,然后提交之后结果还是你们懂的……

(Sigh……x2)

最后看了一眼用户验证的代码,明文存数据库,MD5之后显示在管理界面上……

(Sigh……x3)

如果这作品拿了二等奖的话明年这竞赛我绝对不参加……


顺便吐槽一个方法名,execute_dql

[2/2]解决Windows 8.1检查更新时发生的0x8024A008错误

昨天说到哪了,哦对,怎么把代码注入到别的进程里。

需要用的Windows API是WriteProcessMemory,然后我们还需要获取进程里kernel32.dll的基地址,因此还需要用EnumProcessModulesEx、EnumProcesses

最后为了防止修改进程内存的时候进程运行到OOBEComplete上,还需要两个未说明的API:NtSuspendProcess和NtResumeProcess

另外考虑到之后dll更新会引起函数地址变化,最好能从kernel32.dll的PE头里获取OOBEComplete的RVA再计算出实际地址进行修改

最后因为要修改的svchost.exe是系统进程,我们必须要提升到System级的权限才可以。这部分直接交给SysInternals的PsExec处理。

继续阅读

[1/2]解决Windows 8.1检查更新时发生的0x8024A008错误

DNTTAH => Do not try this at home.

故事还是从之前咱升级了操作系统开始的,因为一直没有收到Windows Update的通知所以咱觉得有点奇怪了。照道理来说每月至少都会有那么几个更新的,毕竟之前也说了,Windows 超复杂。

于是和上一次一样,拿出Process Monitor监测,但是这次什么区别都没看出来

问了Google,看到有几个人和我一样有这个问题,其中有一条是微软官方的回复:

Thank You for sharing the logs. I was able to reproduce the issue in my virtual environment. To understand more about this behavior, I engaged the Product Group and I have been informed that this behavior is By Design. WU uses the OOBEComplete() Windows API call to determine whether OOBE is in progress or not, and if so, it will not perform automatic or UI update searches. HRESULT code 0x8024a008 is the WU error code WU_E_AU_OOBE_IN_PROGRESS. WU automatic and UI updates won’t run while Setup reports that OOBE is still in progress. This is to prevent automatic updates from causing a system reboot during OOBE, which is – needless to say – a Very Bad Thing. This problem has always existed. Unfortunately, when the computer is in Sysprep audit mode, Setup will report to WU that OOBE is in progress even though it might not actually be so. This is the reason that updates from WU UIs are blocked in audit mode. On the plus side, this means that OEMs can better ensure that only the updates they want on their machines get installed in the factory floor image, even if they enable automatic updating in the image.

简而言之:Windows Update被设计为在OOBE模式下(也就是刚装完系统后出现的那个叫你设置用户的界面),是不会检查、安装更新的,以防止在OOBE过程中发生重启。

看来出于某些原因,操作系统认为我还没设置完,但实际上我都用了几个月了。

继续阅读