http://blog.csdn.net/godwater8/archive/2007/06/08/1644060.aspx

PyAsm-在python中嵌入汇编

 http://hi.baidu.com/bluebanboom/blog/item/6b0870f0aa624ea8a40f52e6.html

前段时间公司的项目中用到了调整flash音量的功能,没有找到sdk,去http://www.adobe.com/ 申请sdk没有回音,所以只好自己破解了。
我让公司的美工做了个可调节音量的flash文件,上面有3个button,一个25%,一个50%,一个75%。
选用工具:FPE,IDA。
改变音量,用FPE搜索,再改变,在搜索,基本上就找到地址了,不过这个地址并不是静态存储的,而是动态的,对第二个Flash9::IShockwaveFlash是没有作用的,所以我想应该可以通过Flash9::IShockwaveFlash指针计算出偏移量求得。
于是使用IDA用调试模式启动自己写的一个调用flash.ocx的程序,然后把fpe搜索到的地址上加上断点,这样如果这些数据被访问的话就会发生中断,然后我就可以跟踪相关代码,最后终于找到了跳转方法,是经过2次偏移和一次跳转拿到音量地址的,代码如下:

// param pv   pointer to Flash9::IShockwaveFlash
// param val    the volumn value  range: 0-100
inline void modifyvolumn(void *pv, unsigned int val)
{
    __asm
    {
            push eax
            push ebx
            mov ebx, pv
            mov eax, [ebx+78h]
            mov ebx, eax
            mov eax, val
            mov [ebx + 678h], eax
            pop ebx
            pop eax

    }
}

先偏移78h寻址,然后偏移678h寻址就ok了
上面的函数经过测试,是可以直接使用的

这个只针对flash9b.ocx,没有对其他版本的flash进行过测试,如果有新版flash的控件推出,破解过的朋友请把新的偏移告诉大家,谢谢

近段时间忙着design,所以这篇文章一直没有放上,最近有朋友问起,所以抽出点时间来放到blog上吧,感谢朋友的关注

Posted on 2009-02-26 23:14  古代  阅读(436)  评论(0编辑  收藏  举报