首页
社区
课程
招聘
[原创]破解某音频剪辑应用
发表于: 2019-5-24 17:48 6409

[原创]破解某音频剪辑应用

2019-5-24 17:48
6409

需要用到的工具:

下图为破解前后AboutActivity的对比:

查看AboutActivity.smali,发现其疑似调用LexisAudioEditor.dll中的Recorder.AboutActivity

在apktool反汇编出的文件夹中搜索"Free version"或者其它相关字符串,找到调用字符串的位置,再一次看到LexisAudioEditor.dll

图片描述

使用dnSpy打开LexisAudioEditor.dllRecorder.AboutActivity

其中有一个判断条件NAudioApiSingleton.Instance.naa.LicenseChecker.IsTrial,应该是破解的关键点。

NAudio.dll中找到public bool IsTrial{get; set;}函数,修改get_IsTrial()返回值为false即可。修改前IL代码:

修改后IL代码:

用dnSpy修改保存后,使用apktool打包,签名工具签名,然后使用zipalign让apk中的资源文件在内存中4字节对齐(否则程序无法运行,日志会报错):

 
 

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-5-26 08:02 被Explorerl编辑 ,原因: 添加样本
上传的附件:
收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 452
活跃值: (6128)
能力值: ( LV12,RANK:580 )
在线值:
发帖
回帖
粉丝
2
apk逆向大佬
2019-5-24 23:49
0
雪    币: 2194
活跃值: (1001)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
比较好奇的是apk调用.net的dll ? 这是怎么做到的
2019-5-25 10:34
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
LexisAudioEditor.dll写是关于什么的,发出来研究一下
2019-5-25 10:42
0
雪    币: 129
活跃值: (2763)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Crakme 比较好奇的是apk调用.net的dll ? 这是怎么做到的[em_31]
mono
2019-5-25 10:52
0
雪    币: 6682
活跃值: (1156)
能力值: ( LV5,RANK:158 )
在线值:
发帖
回帖
粉丝
6
nxhack LexisAudioEditor.dll写是关于什么的,发出来研究一下
发了个老版本的样本,大体跟新版本差不错,新版本的体积太大了
2019-5-26 08:05
0
雪    币: 6682
活跃值: (1156)
能力值: ( LV5,RANK:158 )
在线值:
发帖
回帖
粉丝
7
Crakme 比较好奇的是apk调用.net的dll ? 这是怎么做到的[em_31]

这是AboutActivity反编译出的java代码

package md558ac07178e5e80c07598edf7bc81ad1f;

import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
import java.util.ArrayList;
import mono.android.IGCUserPeer;
import mono.android.Runtime;
import mono.android.TypeManager;

public class AboutActivity
  extends Activity
  implements IGCUserPeer
{
  public static final String __md_methods = "n_onCreate:(Landroid/os/Bundle;)V:GetOnCreate_Landroid_os_Bundle_Handler\nn_onResume:()V:GetOnResumeHandler\nn_onOptionsItemSelected:(Landroid/view/MenuItem;)Z:GetOnOptionsItemSelected_Landroid_view_MenuItem_Handler\n";
  private ArrayList refList;

  static
  {
    Runtime.register("Recorder.AboutActivity, LexisAudioEditor", AboutActivity.class, __md_methods);
  }

  public AboutActivity()
  {
    if (getClass() == AboutActivity.class) {
      TypeManager.Activate("Recorder.AboutActivity, LexisAudioEditor", "", this, new Object[0]);
    }
  }

  private native void n_onCreate(Bundle paramBundle);

  private native boolean n_onOptionsItemSelected(MenuItem paramMenuItem);

  private native void n_onResume();

  public void monodroidAddReference(Object paramObject)
  {
    if (this.refList == null) {
      this.refList = new ArrayList();
    }
    this.refList.add(paramObject);
  }

  public void monodroidClearReferences()
  {
    if (this.refList != null) {
      this.refList.clear();
    }
  }

  public void onCreate(Bundle paramBundle)
  {
    n_onCreate(paramBundle);
  }

  public boolean onOptionsItemSelected(MenuItem paramMenuItem)
  {
    return n_onOptionsItemSelected(paramMenuItem);
  }

  public void onResume()
  {
    n_onResume();
  }
}
2019-5-26 08:14
0
雪    币: 2345
活跃值: (10422)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Crakme 比较好奇的是apk调用.net的dll ? 这是怎么做到的[em_31]
应该和OS一样,都是ELF文件吧
2019-5-26 20:12
0
雪    币: 2194
活跃值: (1001)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看引用的包名应该是mono了   3q
2019-5-27 09:23
0
游客
登录 | 注册 方可回帖
返回
//