1.先配置好android killer的运行环境。参考了大神的“安卓逆向培训-1.环境搭建%26工具介绍”
2.把自己使用的手机炒股软件送给Killer解体,得到smali文件结构。
3.分析smali里面的代码,了解软件的逻辑得到我所用的软件的K线是用Kline来表示。本来的公式是MA(5,10,30,线条是用List(MaDataList)来表达,用一个initMA(II)F来计算出该数组。
4.根据上述分析,只要把MaDataList这个数组变成你自己公式的数据就实现了写自己公式的目的。再分析smali里面能够给出什么函数可以取得有用的原始数据,比如收盘价C,最高价H,最代价L等,我的软件里面没有直接得到这些数据的方法,我就分析软件本身的MA是如何计算的,得到了取得C,H,L的方法。
5.用JAVA编写自己的公的算法,我用的是在手机版的AIDE,其中的涉及到一些数组可以先造一个简单的(因为,到了smali里面可以用里面的方法来改),我要的只是该公式的smali代码的流程。
6.反编译公式的程序得到公式的smali,把它复制到软件里面,我把把放进一个smali里面。把函数调用修改好,注意PUBLIC 、静态、直调的smali用法的不一样。
7.调试。这个是最难的,可能会出现许多想不到的问题。在这个调试过程中,我发现,我居然能看懂了smali了。原来用JAVA写的算法,其实用smali也能写了,要到这个程度,否则难调试好程序。
我在调试中出现的错误有:1数据类型不同的函数调用,2.参数修改错误,3.数据边界处理错误。其中第三个错误,原来没有考虑这个问题,总以为是算法不对,逼自己到学习smali语法,最后才想到是边界处理不当造成的问题。
8.运气还可以,成功了。再换一个手机炒股软件试下,却发现卡在对原软件的分析上:找不到它是如何画公式的了:)。叫同花顺的软件很小,killer后,得到的smali文件没有什么明显的提示。 |