Laan's steps..

Feed Rss

fiddler+Flex builder能解决90%的调试问题。不过还有一些特殊的,比如被打包的swf的输出,就需要使用flashplayer的log输入来查看了——第三方的Localconnection解决方案也很不错,不过需要引入第三方类,而且release的时候还需要去掉这些。使用原生的trace就是好,-debug=false即可。

但是这个log功能用起来实在是麻烦:首先还得设置,得写个mm.cfg配置文件;还得找到flashplayer的logs目录,然后找到相应的log输入文件查看信息。于是自己写了个工具去做这些事(还加上了profiling的快捷设置)。

下载地址:http://datasharing.googlecode.com/files/FPTool1.0.air

如果在您老的电脑上运行不正常的话,千万不要联系我~~ 请使用别的程序..

2007年June月29日发布的1.0版本,该版本是稳定发行版。

2007年July月31日,1.0.1版发布,该版本对Safari进行了安全升级,无其他改动。

2007年August月21日,1.0.2版发布,修正了系统内若干Bugs。

2007年September月27日,1.1.1版本发布,从1.0.1直接跳跃到1.1.1,辅版本号有了一次提升,改正也比较多:
1. iTunes Wi-Fi歌曲商店;
2. 提升了扬声器音量;
3. 双击Home按键的快捷方式;
4. Spacebar按键快捷操作;
5. 邮件附件可在portrait和landscape模式预览;
6. 证券功能、天气功能可被存储;
7. 蓝牙电量状态显示;
8. 支持TV输出;
9. 增加关闭EDGE/GRPS网络选项;
10. 密码锁时间间隔;
11. 警告音量可调节;
12. 计算器应用程序界面进行了美化;
这个版本的12处修改,TV输出应该是一个新的硬特性,其他基本是UI/UE性能体验的提升。

2007年November月12日,1.1.2版本被发布,主要改动是:
1. 电量水平显示在iTunes中;
2. I18N了,支持国际语言和键盘;
3. 修正了TIFF漏洞;
4. 增加了自定义铃声功能;
5. 修正Bugs若干;
所以呢,要玩儿中文的、要个性铃声的、要安全的,都要从这个版本开始。

2008年January月15日,1.1.3版本发布,这个版本通常被称作“08年January版”。这个版本改动又比较多:
1. Google Maps特性有了进一步的整合;
2. 桌面图标可自由排列;
3. 可从iTunes Wi-Fi乐曲商店赎回礼物卡片(这是什么高科技?)
4. 从iTunes下载的电影支持章节;
5. Lyrics支持;
6. 网页剪辑可被添加到桌面上;
7. 可群发SMS短信了;
8. SMS存储上限从1千条提升到7万5千条;
9. Gmail首发邮件默认为IMAP协议,之前使用的是POP3协议;
10. 多点触摸键盘,可操作组合键了;
12. 修正计时器记录bug;
13. 收到短信可选择操作变为“查阅或关闭”,之前是“忽略或回复”;
14. 联系人标签可被删除;
15. 应用层程序在mobile权限下执行,与root用户区分开来;

2008年February月26日,1.1.4版本发布,改进如下:
1. 修复了一些漏洞;
2. 短信scramble order修正(我不知道那是什么东西);
3. 不滚动屏幕情况下,显示更多的收件人;
4. 收件人界面有了较大改善;

2008年July月11日,苹果的iPhone就2.0了,最大的特性是支持了3G网络架构,除此之外,还有一堆改进:
1. 支持了微软的Exchange数据同步(看来苹果给了微软一些面子);
2. 对苹果新做的MobileMe服务进行了支持;
3. 可以Push邮件了;
4. Push联系人(邮件可以Push,联系人怎么Push?这里所说的Push可能和我理解的不是一个概念);
5. Push日历(崩溃,日历怎么也能Push?);
6. 全球地址列表;
7. 支持安全证书和签名;
8. 支持WPA2/802.1x无线协议;
9. 支持安全策略;
10. 支持中文和韩文;
11. 支持VPN协议了;
12. 设备设置;
13. 支持Remote wipe服务;
14. 可观看PPT文档,苹果给了微软更多的面子;
15. 可阅读iWork文档;
16. 批量邮件删除;
17. 批量邮件移动;
18. 支持了Bonjour服务协议(这回爽了,iPhone变成核武器了快);
19. 家长监控(你就别想用iPhone看美女了);
20. 搜索联系人;
21. 应用软件存储;
22. 在设置里,多了一个日历按钮;
23. 科学计算器;
24. 更新了iTunes的图标;
25. 在Safari中可打开或保存网页图片;
26. 支持了简体、繁体中文的手写输入识别;
27. Geotagging,暴走族肯定Happy了……
28. 支持了好多小语种;
29. 在Safari中增加了YouTube的插件;
30. 在Portrait或Landscape模式下,可看音乐视频;
31. 支持截屏功能了;

蓝斯登原则:在你往上爬的时候,一定要保持梯子的整洁,否则你下来时可能会滑倒。进退有度,才不至进退维谷;宠辱不忘,方可以宠辱不惊。

卢维斯定理:谦虚不是把自己想得很糟,而是完全不想自己。如果把自己想得太好,就很容易将别人想得很糟。

托利得定理:测验一个人的智力是否属于上乘,只看脑子里能否同时容纳两种相反的思想,而无碍于其处世行事。这是判断一个人依据的标准。

刺猬理论:刺猬在天冷时彼此靠拢取暖,但保持一定距离,以免互相刺伤。保持亲密的重要方法,乃是保持适当的距离。

鲦鱼效应:鲦鱼因个体弱小而常常群居,并以强健者为自然首领。将一只稍强的鲦鱼脑后控制行为的部分割除后,此鱼便失去自制力,行动也发生紊乱,但其他鲦鱼却仍像从前一样盲目追随。下属的悲剧总是领导一手造成的。下属觉得最没劲的事,是他们跟着一位最差劲的领导。

洛伯定理:对于一个经理人来说,最要紧的不是你在场时的情况,而是你不在场时发生了什么。如果只想让下属听你的,那么当你不在身边时看他们是不是还“听你的”?

斯坦纳定理:在哪里说得愈少,在哪里听到的就愈多。只有很好听取别人的,才能更好说出自己的。为了多听,必须少说!

牢骚效应:凡是公司中有对工作发牢骚的人,那家公司或老板一定比没有这种人或有这种人而把牢骚埋在肚子里公司要成功得多。牢骚是改变不合理现状的催化剂。牢骚虽不总是正确的,但认真对待牢骚却总是正确的。有人发牢骚,说明他对现状的改变有信心,没有信心,他就不再发牢骚!

氨基酸组合效应:组成人体蛋白的八种氨基酸,只要有一种含量不足,其他七种就无法合成蛋白质。当缺一不可时,一就是一切。

米格-25效应:前苏联研制的米格-25喷气式战斗机的许多零部件与美国的相比都落后,但因设计者考虑了整体性能,故能在升降、速度、应急反应等方面成为当时世界一流。所谓最佳整体,乃是个体的最佳组合。1+1》2。

磨合效应:新组装的机器,通过一定时期的使用,把磨擦面上的加工痕迹磨光而变得更加密合。要想达到完整的契合,须双方都做出必要的割舍。

波特定理:当遭受许多批评时,下级往往只记住开头的一些,其余就不听了,因为他们忙于思索论据来反驳开头的批评。总盯着下属的失误,是一个领导者的最大失误。

吉尔伯特法则:工作危机最确凿的信号,是没有人跟你说该怎样作。真正危险的事,是没人跟你谈危险。

权威暗示效应:一化学家称,他将测验一瓶臭气的传播速度,他打开瓶盖15秒后,前排学生即举手,称自己闻到臭气,而后排的人则陆续举手,纷纷称自己也已闻到,其实瓶中什么也没有。迷信则轻信,盲目必盲从。

定位效应:社会心理学家曾作过一个试验:在召集会议时先让人们自由选择位子,之后到室外休息片刻再进入室内入座,如此五至六次,发现大多数人都选择他们第一次坐过的位子。凡是自己认定的,人们大都不想轻易改变它。

吉格勒定理:除了生命本身,没有任何才能不需要后天的锻炼。水无积无辽阔,人不养不成才。

犬獒效应:当年幼的藏犬长出牙齿并能撕咬时,主人就把它们放到一个没有食物和水的封闭环境里让这些幼犬自相撕咬,最后剩下一只活着的犬,这只犬称为獒。据说十只犬才能产生一只獒。困境是造就强者的学校。

近因效应:最近或最后的印象对人的认知有强烈的影响。结果往往会被视为过程的总结。

洒井法则:在招工时用尽浑身解数,使出各种方法,不如使自身成为一个好公司,这样人才自然而然会汇集而来。靠事业吸引人才,靠待遇留不住人才。

美即好效应:对一个外表英俊漂亮的人,人们很容易误认为他或她的其他方面也很不错。印象一旦以情绪为基础,这一印象常会偏离事实。

近工作比较繁忙,常常有一个困扰:总是在找快捷方式。于是想写一个程序来让快速搜索,定位、开启程序。而正好Adobe  AIR2.x也正好添加了一个很有用的方法:File.openWithDefaultApplication()。于是有了AppManager:



AppManager主要是用于集中管理你的程序。你可以添加你需要快速搜索的程序到AppManager,在AppManager中可进行快速搜索并定位开启该程序。不足的是File.openWithDefaultApplication不能打开exe,lnk等adobe认为比较危险的程序。所以,可以优先使用exe版本!
AIR版本在线安装:



.exe版本下载》》 .air版本下载》》(需要安装Adobe AIR 2.0或更高版本)

Adobe AIR 2 beta 2 was released on February 2, 2010. This release provides additional features, enhancements, fixes and miscellaneous improvements over beta 1.
Download AIR 2 beta 2 | AIR 2 beta 2 Release Notes

  • Enhanced support for interacting with printers (beta 2)
  • Support for TLS/SSL socket communication (beta 2)
  • Support for the detection of mass storage devices.
  • Advanced networking capabilities like secure sockets, UDP support, and the ability to listen on sockets.
  • Support for native code integration.
  • The ability to open a file with its default application.
  • Multi-touch and gesture support.
  • New APIs for access to raw microphone data.
  • Webkit update with HTML5/CSS3 support.
  • Global error handling.
  • Improved cross-platform printing
  • Improved security and support for enterprise and government standards.

First of all, you can not do this just in Adobe AIR. So, a third-party tool is a good choice:

  1. Install 3rd party hotkey application (like AutoHotkey or HotKeyBind)
  2. Configure hotkey application  to launch your AIR application.
  3. In your AIR application, register for the NativeApplication.invoke event, and watch for arguments to do something.

Maybe the Adobe AIR will add those features in the future.

音乐工业长期以来被MP3无版权保护引发的盗版问题困扰,而我们也很清楚一些下载网站下到的MP3可能会出现标签混乱等情况,更不用指望关联歌词、作者等信息了。而一种新的技术可能将成为这种情况的终结者,它将在MP3格式的基础上附着版权和歌手、专辑信息甚至是分销商信息。这种名为“音乐DNA”的新格式已经得到了MP3格式的发明者的支持。该格式还提供歌手相关的社会化网站上的最近更新。当信息更新或者变动,嵌入歌曲的信息也会随之刷新。如果通过非法下载而得到的文件,将除了静态的音乐文件本身,得不到其他任何更新(这对于只希望听听而已的人来说似乎不是难以克服的障碍)。

新的格式将在现有的任何MP3音乐播放器上播放,包括苹果iPod。Kohlmeyer认为人们将很快不满足于单纯的聆听音乐,而需要歌词、歌手信息等配套的内容加入,让音乐丰满起来。今年春天将会有该格式的Beta版本在网上发布,夏天将可能全面商用。移动版的播放器也即将推出。

BACH公司是该项技术的开发者,MP3格式的开发者和索尼音乐的前高管都是该公司的投资者。该公司办事处位于挪威、德国和中国,并与德国弗朗霍夫数字媒体技术学院(Fraunhofer Institute for Digital Media Technology)形成合作伙伴关系。CEO Stefan Kohlmeyer 说,公司正在同相关的音乐企业、网络零售商和乐队等进行联系,并收到很好的反馈。BACH还将允许一些公司用自己的商标发布新格式的音乐文件以加速其推广。他们还鼓励开发者为MusicDNA格式开发新的播放软件。

包括环球唱片公司在内的一些业界大牌已经对该格式表现出了强烈兴趣。BACH公司认为,音乐业界需要一种新格式,来缓解他们对数字媒体越来越多的抱怨。不过希望他们不会重蹈DRM失败的覆辙。

音乐工业长期以来被MP3无版权保护引发的盗版问题困扰,而我们也很清楚一些下载网站下到的MP3可能会出现标签混乱等情况,更不用指望关联歌词、作者等信息了。而一种新的技术可能将成为这种情况的终结者,它将在MP3格式的基础上附着版权和歌手、专辑信息甚至是分销商信息。这种名为“音乐DNA”的新格式已经得到了MP3格式的发明者的支持。该格式还提供歌手相关的社会化网站上的最近更新。当信息更新或者变动,嵌入歌曲的信息也会随之刷新。如果通过非法下载而得到的文件,将除了静态的音乐文件本身,得不到其他任何更新(这对于只希望听听而已的人来说似乎不是难以克服的障碍)。

新的格式将在现有的任何MP3音乐播放器上播放,包括苹果iPod。Kohlmeyer认为人们将很快不满足于单纯的聆听音乐,而需要歌词、歌手信息等配套的内容加入,让音乐丰满起来。今年春天将会有该格式的Beta版本在网上发布,夏天将可能全面商用。移动版的播放器也即将推出。

BACH公司是该项技术的开发者,MP3格式的开发者和索尼音乐的前高管都是该公司的投资者。该公司办事处位于挪威、德国和中国,并与德国弗朗霍夫数字媒体技术学院(Fraunhofer Institute for Digital Media Technology)形成合作伙伴关系。CEO Stefan Kohlmeyer 说,公司正在同相关的音乐企业、网络零售商和乐队等进行联系,并收到很好的反馈。BACH还将允许一些公司用自己的商标发布新格式的音乐文件以加速其推广。他们还鼓励开发者为MusicDNA格式开发新的播放软件。

包括环球唱片公司在内的一些业界大牌已经对该格式表现出了强烈兴趣。BACH公司认为,音乐业界需要一种新格式,来缓解他们对数字媒体越来越多的抱怨。不过希望他们不会重蹈DRM失败的覆辙。

转自:http://space.flash8.net/bbs/thread-389762-1-1.html

情理之中,意料之中。不做任何评论,转载该文章,只是钦佩作者的钻研精神。不过还是希望破解不要太肆意。我不想把太多的时间花在防盗版上。自觉吧…

doswf破解版本很老且无用,最新的功能较强大且无破解版。试着用它加密过不下几百个,然后试图破解,只有2个完全成功。有些标签经过加密后,会让ASV和闪客精灵卡死。不过加过密的swf,很多都被部分损坏。
目前摸清楚了点原理,还在继续研究中。
doSwf基本上是用byteArray把原swf分解加工成ABC文件,然后用混淆过的builtin和类进行重组。而这种方法,是在swf10才有的。可以直接用abc文件的opcode和avm2debug代码,是伴随着alchemy出现的。所以针对swfencrypt6.04和doswf4来说,除了swf默认的文件格式,还得知道alchemy项目编译后的swf,有什么规律。这个因为本人不擅C语言,一点研究都没,暂时只做些推测。
很怀疑是不是doswf是直接addChild整个原swf,替换掉了stage。之所以这样认为,是因为一个有NN个addChild的swf,经过加密后,只剩下两个addChild,和一个removeChild。试图把这里的addChild和removeChild替换发现。原swf居然和doswf的水印居然是一个object。但是在as里写trace得知,原始的路径确实是在stage下面没错。
之间的代码大概是这样的
setTimeout(fun,5000)   //给个缓冲时间,因为doswf加密后的东西,往往隔个1-2秒才出现。
function fun(){
trace(this.stage.numChildren())
}
我们可以发现,经过加密后,stage上的children变多了一个,即是水印。而通过修改上面说的两个addChild和一个removeChild的部分,如果取消removeChild部分,stage的显示列表下实际上是多了两个物件。第一个物件不详,并且修改之,会使得flash打不开。猜测很可能是原始的stage。最想不通的是为什么水印会和原始的swf里的物件在同一个层级中。这里还需要很多研究,而且doswf每次加密时都会生成随机的替换字符用来混淆,甚至用来作为byteArray解析的密匙。
另外,addChild部分做解密后大概是这样的:   //替换stage没看到过相关的资料,也不一定确实可行,所以下面的伪码,实际效果可以实现,但是反推的代码很可能是错误的。
setTimeout(fun,time) //一定时间缓冲。可能怕水印加太早被其他物件覆盖。
addEventListener(Event.ADDED_TO_STAGE,fun1(e))   
function fun(){
加水印到原swf的stage中
移除原来的stage
}
function fun1(e){
把整个stage加进场景
}
而因为类名都进行过混淆,且doswf一加密至少多出9KB,暂时还没找到。所以只能用以下拙劣的方法去水印了
addEventListener(Event.ENTER_FRAME,doswf)
function doswf(e){
var m=this.stage.getChildAt((this.stage.numChildren-1))
if(m.x==0&&m.y==0&&m.width==129&&m.height==30){
this.stage.removeChild(m)
removeEventListener(Event.ENTER_FRAME,doswf)
}
}
理论上,可以通过它的opcode来反推水印。无奈在不同的AVM模拟器中,得到的opcode不尽相同,且目前AVM模拟器对比官方的flashplayer10落后很多。如果不知道原理,反编译doswf加密的swf10,几乎是不可能的。
而非替换整个文件结构的加密,去水印则很容易。
swf.uncompress()   //一切加解密都是在解压缩后操作的
for(var i=l2;i<l1;i–){     //通过判断byte中的数据,去掉目录里的水印的相关数据。
swfByte.readBytes(h,i,length)
if(h.toString()==” “){
重组swf
}  
}
此数据位置因为是在 目录 中,所以在文件尾处倒着查起的某个范围中。对于不同的加密软件,参数都不一样。对于swfEncrypt之前的版本来说,基本上没加密且都在文件尾。。



另。
正因为doswf加水印是用addedtostage触发的,所以用onEnterFrame或setInterval都会有个小的时间差。等研究多一些时,应该写个方法,把去水印函数加在添水印的函数里才算完美。

Typically, the order of the search for resolving multinames is the object’s declared traits, its dynamic properties,
The dynamic properties and prototype chain search will only happen if the
and finally the prototype chain.
multiname contains the public namespace (dynamic properties are always in the public namespace in
ActionScript 3.0; a run-time error is signaled if an attempt is add a non-public property). If a search does not
include one or more of these locations, it is noted in the text in the following chapters. Otherwise, you can
assume that all three are searched in this order to resolve a multiname.
If the multiname is any type of QName, then the QName will resolve to the property with the same name and
namespace as the QName. If no property has the same name and namespace as the QName, the QName is
unresolved on that object.
If the multiname has a namespace set, then the object is searched for any properties whose name is the same as
the multinames name, and whose namespace matches any of the namespaces in the multinames namespace set.
Since the multiname may have more than one namespace, there could be multiple properties that match the
multiname. If there are multiple properties that match a TypeError is raised since it is ambiguous which
property the multiname is referring to. If no properties match, then the multiname is unresolved on that object.