逆向初体验之玩“英语趣配音”

2024-02-24 16:40
文章标签 英语 逆向 初体验 配音

本文主要是介绍逆向初体验之玩“英语趣配音”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前天看到空间里有人在玩给视频里的人说的话配音。有两种,一种其实就是卡拉OK的形式,把话筒交给你;另一种是给电影里的人物配音,就是说台词。想想近期有给你一段音频要你自己表演对口型的,还有给你视频要你自己配音的。 我也玩了一下,录完之后分享到微信朋友圈,结果我点击分享按钮之后,这软件提示我“发送取消”。我心想我明明点的“发送”啊,怎么就成“取消”了。好行,取消就取消吧,我就再发送一次,结果还是“发送取消”,反正前后总共云雨了三次之后,我放弃了,然后就去吃饭了。结果回来一看,咦,怎么朋友圈里这么多条响应?

Image text

然后我把自己的朋友圈的“相册”打开发现已经发布了三条,由于后来又被我删除了,这里只剩下两条。

Image text

我寻思原来您玩延迟呢! 然后我就想看看里面代码到底怎么写的。话说上次玩“唱吧”也是的,第一次玩就发现一个bug,就是当你打开一个你之前已经打开过的曲目时,而且是同一个版本的话,即,该版本的缓存已经在你本地了,比如我打开上次唱过的“Lose yourself”,因为这首歌有几个版本,去确认了是刚才打开的那个版本之后,当我再点击那个曲目时,就进不去了,而打开其他任何我没打开过的曲目都挺好的。。。后来我反馈给了“唱吧”新版本解决没有。PS:这么简单的一个bug也没发现。。。(难道因为众ROM难调,是我机型问题?) 好,闲话不多扯,看看里面代码到底怎么搞的。首先当然是先在手机里观察,这里应用的底部有四个标签页(TabHost):“配音”“小组”“榜单”“我”。Image text

然后audio,group,rank,me…几个单词就出现在我脑海里,在猜想他会怎么命名呢?好,首先当然是打开配置文件(AndroidManifest.xml)咯。搜索“android.intent.action.MAIN”“android.intent.category.LAUNCHER”的“活动”(Activity)。好找到了,“com.ishowedu.peiyin.login.SplashActivity”嗯,这里不是一个主界面,应该是一个欢迎界面。好像一般都这个路数哈,先是一张欢迎的图,然后如果没有账号在本地登录过,即本地没有你的SharedPreference的话,就进入登录界面;如果你已经登录过了,那么直接进入主界面。打开这个Activity,注意到这个Activity没有直接继承Activity类,而是

Image text

好了,先不去研究BaseActivity2是个什么玩意,先搜索onCreate()吧,结果居然没有,啊,我还是太年轻,原来您不重写这个啊?行,那就搜startActivity()吧,您总得跳转的吧。搜到一个叫onLoadFinished()的一个方法,可能是BaseActivity2的吧,啊,不管了,好,找到线索了。Image text 看到经过判断后,它会跳转到MainActivity。然后再搜MainActivity的onCreate()方法,这次总算有了吧Image text 看到一个init(),看下面也没有重要的点了,关键应该在init()里面。结过看了init()之后,发现我想错了,我看init()干嘛,我现在底下有四个TabHost,我应该找TabHost啊!于是搜索TabHost之后发现了这个Image text 哈哈,这不就是了,home,group,rank/show,me这些东西。将GroupHomeWrapperFragment与“小组”选项卡配对,RankFragment2与“榜单”配对,MeSpaceFragment与“我”选项卡配对之后,就只剩下HomeFragment了,好吧,那只能是你了。所以我目前所在的“配音”选项卡应该是HomeFragment。我要找到我的地盘,然后打开我先前配的音当然要到MeSpaceFragment里面去看啊。

Image text

看到这个页面有很多选项,可能是Button或者什么View之类的。看看全局变量吧,找到很多TextViewImage text

想到这个界面里的各种词“粉丝”“访客”“相册”什么的,然后什么fans,visitor,album,friend之类的东西就出来了,看看变量名,恩,应该就是你们这几个家伙了。然后我发现到现在为止我已经看到好多次dubbing这个词了,这词啥意思啊,没见过。查了查,哦,原来是“配音”的意思。那“我的配音”这个按钮应该对应tvMydub这个了。那就该去找点击之后会发生什么啊,于是找onClick()。在onClick()中有很多case,对应着这个界面中的各个View控件,再找startActivity()。好像没有什么信息需要返回的,应该不是startActivityForResults()。在众多的startActivity()中找吧。Image text 看到一个DubbingListActivity,这个应该是表示“配音列表”吧。但是startActivity()中的参数怎么不是直接指定的Intent呢?猜想createIntent()应该是返回一个Intent,去里面瞄了瞄,恩,是的,好,这我就放心了,然后就进入了DubbingListActivity,这时候我们就来到这里了

Image text

捣鼓了半天,在它的onCreate()中发现这两个方法initActionBar()和initFragment()Image text

经过验证发现,应该上面是ActionBar,下面是Fragment。然后就找onClick(),找了半天发现没找对地方,后面想了想,这活应该交给它的Fragment,于是在initFragment()中找到了对应的DubbingListFragment。又是一番好找(第一次玩,没经验啊),在DubbingListFragment中找到了两个响应点击事件的监听器(在那个有视频截图的图片上长按,发现有响应的对话框出现,对应的,猜想应该有一个对长按响应的监听器)。Image textImage text长按的就不看了吧,看OnItemClickListener这个的onItemClick()吧,找到关键代码Image text发现一个新的HotRankInfoActivity。看名字不像是这个界面的感觉啊

Image text

就因为这个名字,没有想通,在别的地方又找了好久(所以还是没经验啊)。最后还是根据在这个界面中点击“评论”和“分享”按钮时,系统弹出的Toast“当前为本地视频,请上传后重试”这个线索,发现还只能是这里了。//当然,同时我也因此找到了与“评论”和“分享”按钮相关的代码区域。好了,再来,再找它的onCreate()Image text再看initFragment()这个方法Image text(先前对Fragment不怎么熟,临时抱佛脚,查了下官方文档才知道怎么用的。)于是,我们又要跳到HotRankInfoFragment里去瞧一瞧了。照例,还是在onClick()中找,发现switch里有几个case,应该是对应的“评论”“我要配音”“分享”这几个按钮。Image text看到698行,“分享”按钮下面,又是对操作者是否是本地用户进行了判断。最后关键的是707行(开始以为709行会干什么重要的事咯,后来发现原来只是给新打开的Activity加一些特效),将各种乱七八糟的参数传给Intent后,进入到ShareActivity,也就是这个界面:

Image text

在ShareActivity中,又是通过对onClick()的查看发现了各个caseImage text发现对分享到“微信好友”和“微信朋友圈”有一条两者都需要走的路。

Image text

都是先检测“微信”的版本,确认该版本可以分享之后,再通过对weChatShare()传递不同的参数,以区分“发送给微信好友”还是“分享到朋友圈”这两种情况。在weChatShare()中,通过调用腾讯的微信SDK中的API,将这个“配音”的各种信息(视频的url,封面图片,描述语等)交给微信的Activity来完成。Image text

最后,我想不通的是我点击了“发送”按钮之后,这个应用给我的提示居然是莫名其妙的“发送取消”

Image text

我通过“发送取消”这个字符串找了半天也没找到是在哪里出现的。。。最后我在smali目录下搜索所有文件中是否有包含“0x7f0d0099”的字符串出现,结果开始很让人兴奋Image text

但后来发现它出现在微信的API中的一个回调方法onResp(BaseReq paramBaseReq)中,至于怎么微信是怎么处理“发送”按钮的,我就不得而知了。所以我们的探索到这里也只能结束了。最后总结一下,第一次玩逆向,太年轻,走了很多弯路,其实应该直接adb连接手机,在DDMS里面直接观察就可以发现当前处在哪个Activity,调用了哪个方法。最后顺便瞄了一下DDMS,突然有个”xiaomi”的Tag,我好奇,我寻思这谁啊?我又没用小米的手机,怎么又这个东西,后来找到原来是bilibili的pushservice…Image text

一怒之下,将其禁用。随后又想起各种无聊的推送消息,一一禁用。

Image text

这篇关于逆向初体验之玩“英语趣配音”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742724

相关文章

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

转:android ro.debuggable属性调试修改(mprop逆向)

android ro属性调试修改(mprop逆向)      大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出

某里227逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解阿里227版本滑块参数n的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。 一

英语每日一段 195

Promising economic indicators won’t instantly reverse the lingering impact of hard times for millions of families, workplace culture expert Jessica Kriegel said. “Perception and reality are sometimes

【MyBatis学习14】MyBatis的逆向工程生成代码

1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。 2. 使用逆向工程 使用mybatis的逆向工程,需要导入逆向

js逆向--cai招网

js逆向--cai招网 一、寻找加密入口1、抓包2、关键字搜索寻找加密入口 二、调试js三、python代码实现 一、寻找加密入口 1、抓包 目标数据来源网址为:https://search.bidcenter.com.cn/search?keywords=%E5%85%AC%E5%85%B1%E4%BD%8F%E5%AE%85,打开开发者工具进行抓包。 目标响应数据被加密。

NRF51822 小黄车智能锁 逆向工程

笔者在夜跑时发现有人将拆下的小黄车智能锁丢弃在花园角落,于是萌生了拆解的想法。 拆开外壳后发现MCU 是NRF51822 ,并且预留了Jlink 调试接口,更萌生了逆向这个电路板的想法 下面是 各个智能锁厂家提供的方案: 摩拜单车:STM32F1+GSM+GPS 使用芯片 STM32F401 + NRF51802(BLE)+TD1030 泰斗定位芯片+BQ25895(充电管理)+C3Hx(

某城user_dun,js逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解某城ly headers中参数userdun的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有

Node.js初体验 Kali安装Node.js

背景:偶然看到node.js开发微信公众号的视频,有些好奇,想要接触下。然后花了两个小时在实验楼网站上在线学习了JavaScript的基础知识,以及Node.js的基础 接着本着从实践出发的原则 先去本地kali下安装个Node.js玩玩 下载地址:https://nodejs.org/en/download/ 网页最下面有提示:Note: Python 2.6 or 2.7 is requ

ssm微信小程序的英语学习激励系统论文源码调试讲解

2 关键技术介绍 2.1 SSM框架 开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种