记一次简单反编译

2019-04-30  本文已影响0人  Youremywoman

记一次简单反编译

背景:想看某款收钱软件播放取消订单语音的逻辑。

步骤

  1. 下载该软件apk 解压找到raw目录找到对应语音文字名字。cancel.order.ogg
image-20190327115336436.png
  1. 安装该软件走一遍流程看在那几个界面会播放该语音。使用adb shell dumpsys activity top命令

    查看Activity和fragment名称记录这两个类一般不会混淆这里是ScanFragment

    <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="shell" cid="n11" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; page-break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">Added Fragments:

    0: ScanFragment{7bbcbf6 #0 id=0x7f0900ff}

    FragmentManager misc state:
    mHost=android.support.v4.app.FragmentActivityHostCallbacks@95efbf7 mContainer=android.support.v4.app.FragmentActivityHostCallbacks@95efbf7
    mCurState=4 mStateSaved=false mStopped=false mDestroyed=false</pre>

  2. 利用jeb2工具逆向静态分析代码 在Dex的smali中command+F搜索ScanFragment 按Q转成java

image-20190327120743138.png image-20190327120813424.png

下面就是看这些混淆代码分析的艰难过程了 。慢慢分析到请求终端信息-> 生成订单->条码支付

后面发现是在PayResponseFragment中播放语音 但是只有收款成功的语音。

  1. 类似上步骤搜索cancel.order 转java 找到了PushIntentService。找到调用语音处接口 按O查看复现方法 。按X查看调用处 发现两个地方调用到了这个方法 一个是语音设置界面 一个就是PushIntentService处
image-20190327121629551.png
  1. 找到语音设置界面找到按钮点击确实播放了取消语音。 这里初步判断是靠推送播放语音的 后面没仔细分析了。
上一篇 下一篇

猜你喜欢

热点阅读