能力值:
( LV3,RANK:20 )
|
-
-
4 楼
其实我就是这么做的,一旦把flash反编译得到代码,然后再编译成功后,代码就掌控在你的手上了,我是把程序中显示炮弹飞行的那个函数复制,然后改成新的函数,用来显示炮弹轨迹,有了轨迹后,就可以用来精准打击,不单单是落单,可以避开复杂的障碍物,直接打击到对方了.
最帅的就是,第一次炮弹打开一个通道,第二次,炮弹通过这个通道直接打击到对方.呵呵
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
前段时间有人看了我的这个帖子,然后想和我一样对弹弹堂下手,和他聊了几次后也勾起了我的兴趣,又重新找资料准备下手,因为我是超级菜鸟啊,讲究拿来主义,没办法,图书馆借几本as3的教程,开始下手了.
虽然是flash,和这个论坛的主调可能不是很配,但思路和方式是一致的,本来想到flash论坛讨论的,但那里都是开发者,我过去发帖子估计被人打出来的可能性比较大,另外,正向逆向的... 思路方向也对不上号,不说了,直接又上理论.
申明,以下思路为原创,至少是自己想出来的,前人估计应该是有的.......
flash我们接触最多的就是swf文件,这个是一个结构化的文件,最开始当然是文件头部分,里面有放了swf的一些总体的信息,是否压缩,文件大小,场景尺寸等等,剩下的部分分为好多个段.. 有多少段得看swf里面放了多少东西了.每个段,称为TAG,TAG有很多种,除了各种资源外,还有很重要ABC段,就是代码段啦.我们的目的就是对代码段下手了.
其他的替换资源的是小意思了,现在多的是工具做这种勾当了.
但是对ABC下手的,大家都是遮遮掩掩的,这个主要是因为flash的性质所决定的.
flash是一种解释执行的语言结构,他的脚本代码编译的时候被编译成ByteCode,字节码,反编译后代码的可读性很高,这也是为什么优秀的flash总是被模仿山寨的原因,因为代码借鉴实在是太容易了.为了防止这个事情的发生,所以就有了市场,就有了各种各样的加密软件对flash加密.
但,这些,其实都是无效的,只能防新手,防君子,和普通的应用程序反调试不同的是.. bytecode永远是bytecode,他里面的所有调用都是序号形式,也就是说,执行的时候都是序号方式调用,至于脚本中原先的元素名称则被写到了一个统一的地方,这个..其实是没有用处的,执行的时候不会被调用,所有的flash加密,反调试手段都是针对这个东西的,把他搞乱,什么意思,就是把你反编译后的代码搞的很难看,比如变量名字改成非法的,乱码的,改成统一的,但这些都是浮云... 我的做法很简单,因为是序号方式调用,那么.. 我吧所有的这些名字都该成对应的序号的名字.. 序号1就叫序号1,类推,至少比乱码好看
然后.. 每个类,都是一个abc,我们把abc 单独导出,然后修改后,再倒入.. 一个类的代码就被替换了
然后... 想怎么搞就怎么搞了
因为是序号调用.. 所以,只要你把类所调用的其他类的那些方法属性的序号,自己公共的方法属性的序号搞的和原先的那个ABC一直,那么这个ABC就随你任意搞了.
写的非常乱,因为思路本来就乱,想到哪里写哪里是我的风格,明天再回头补充
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
哦,对了,还有很多的软件是用来加密代码的,也就是和加壳是一个道理,但是,这个其实是最垃圾的办法,因为这种加密方式有个很明显的特征,他把原swf加密后保存,用的时候再还原,但是,最终,还是没用,因为,如果要把这个swf加载,那么,基本上,这个swf的数据的开头,必须是FWS,或者是CWS,只要在内存中找这个特征字,然后对比文件的大小,就直接可以DUMP出来了,DOSWF这个据说很牛,但不说其他混淆代码的功能,至少这个加密,手动,加思路加动手测试,10分钟内就搞定它了,这个还是第一次干.. 估计下次,只要2分钟.
加密软件4法宝
1,加密
2,修改String信息
3,代码混淆
4,代码替换
代码混淆就是在里面增加大量无用代码,然后加上跳转,看上去像是花指令,实际上却什么都不是,只是通过大量的跳转指令来使代码的顺序错乱,并且使反编译软件工作的时候出错..如此而已.现在反编译器都有代码了,所以,除了稍微增加点时间外,没什么大的用处了
代码替换..这个是比较厉害的,其实就是用ASM来替换PCODE,但是... 我估计碰到混这论坛的. 死的比其他方式的都快(最后这个,没碰到,只是猜测,呵呵)
|