分析一个安卓锁机APP

其实这个样本是我在论坛上别人的求助帖子里看到的,就下载下来看一下:


  • 首先这个软件大小就不对,45KB!其次是看在安装界面,注意右下角的不是【安装】而是【激活】,正常的软件安装都是显示安装。再看安装时系统的提醒,此软件需要的权限:
  • 清除所有数据,恢复出厂设置;
  • 更改屏幕解锁密码;
  • 设置密码规则;
  • 监视屏幕解锁次数;
  • 锁定屏幕;这几条看着怎么都不想常见的APP安装时获取的权限吧

step.png


我们是测试嘛!真正在安装遇见这种APP时,请一定慎重!点击激活后,就是锁屏画面咯:解锁.png

当然,图中的密码,计算方式是逆向此APP后得出的算法而已,接下来我就分析一下;

首先是打开我们的Android逆向工具:Android killer,载入程序:

12345.png

然后我们是 java的开发工具查看java源码,图中的小红圈图标就是,打开后可以看到程序的结构和其中的密码设置算法(非常简单,就是取随机数加上设定的值):

1234.png

其中关键的密码算法就是这段:

super.onCreate();
    this.pass = (()(Math.random() * 100000000));
    long l = this.pass + 100;
    Long localLong = new Long(l);
    this.passw = localLong;
    DU localDU1 = new DU("flower");
    this.des = localDU1;

其中的passw就是锁屏上的所谓序列号,解锁密码就是这个序列号加上 100,到这还没完,因为输入这个后,重启开机还得输入程序改变设置的pin码,在程序里面可以很清除的看到:

123.png


public class MyAdmin extends DeviceAdminReceiver
{
  @Override
  public CharSequence onDisableRequested(Context paramContext, Intent paramIntent)
  {
    String str = Integer.toString(2580);
    getManager(paramContext).lockNow();
    getManager(paramContext).resetPassword(str, 0);
    return super.onDisableRequested(paramContext, paramIntent);
  }

DeviceAdminReceiver就是安卓的设备管理器,通过这个设置的pin码,刚刚前面讲了,程序在安装时就获取了这个权限,所以在后面的卸载中也需要用到设备管理器才可以卸载的。接下来说一下怎么卸载:

首先我们在重启后需要输入刚刚从源码里分析得到儿pin码:2580,输入后就解锁进入桌面了:1231.png1212.png


注意:卸载的时候需要取消激活设备管理器,这时候还要在输入一次pin值,完了以后再确认一下是否卸载,去设置-应用,看看有没有该应用,有可能隐藏为系统应用。

xiez.png

quxiao.pngshebei.png

最后,就是这个程序的传播者,他说他是这个程序的开发者,简直可笑。。。曝光他:

2b.jpg15775701007.jpg

曝光他的QQ,手机号就行了,至于名字,地址等等就不暴露了,毕竟还是个中学生。。。希望他能够走向正途吧!

我们下回见! Mrxn 04/1/2017




Mrxn 发布于 2017-1-4 07:05

知名软件破解论坛睿派克部分软件分享

这两天睿派克(http://www.repaik.com)的论坛持续被攻击已经挂掉,站长已将域名解析到了他自己的博客https://www.rpk31.com/了,我在网上看到很多童鞋想下载论坛的软件,在这里就把自己收藏的软件贡献出来,需要的自己去找:

00.png

最后呢,希望论坛可以挺过去,论坛还是不错的,和吾爱这些破解论坛都是比较有名的。加油!最后,希望那些骇客三思啊!

下载地址:http://pan.baidu.com/s/1i31xXDr

标签: 攻击 逆向

Mrxn 发布于 2015-10-16 14:32

VB程序的破解思路总结、编译方式vs破解工具 比较(确实不错)

WARNING:
此文章非常长,如果你感兴趣但是没耐心看完,可以做个标记然后按浏览器的关闭按钮,等到下次有兴趣了再看。这里我尽量多和详细地解释了VB程序的破解(其
实也可看到反破解)的相关东西,把一个简单的VB计时器程序研究透了,对于VB破解应有较大帮助,如果觉得无用的不要喷,谢谢!可能包含错误认识,如有错
误欢迎指出。


VB程序也是一个非常有趣的东西,你去看VB的主程序,是用Microsoft Visual C++
5.0编写的,也就是说,其实里面调用的各种命令和控件,都是一段VC++的代码。还有VB运行时必须的“库”(虚拟机):msvbvm50,
msvbvm60, 都是Microsoft Visual C++
DLL,所以非常明显的,只要研究透了VB的这个VM虚拟机DLL,完全可以反编译出P-code的程序的源码。著名的程序就有比如VB
Decompiler,它对于P-code的效果大家可以在下面的分析中看得出来,当然它对于编译成Native
Code的程序效果也不错,只不过名称什么的都不太清楚。所以说,VB的P-code程序(其实Native
Code程序也差不了多少,只不过虚拟机里的代码一部分都插入了程序里而已)和Flash的SWF还是有异曲同工之妙的:都可以反编译(可能可以得到源
码),原因都在于它们用了比较“通用”的虚拟机。vb的就是vbvmXX.dll,flash的就是Flash Player XX。



为了更好地研究VB程序的破解,我特意使用了一个小程序来做演示。

另外,由于正向和逆向是有联系的,所以我这里写正向的时候可以类推到逆向,写逆向的时候可以类推到正向。

这个程序是某个同学给我的,听说我学破解,就想让我来看看他的程序编译到底是编译成P-code好还是编译成native code好,如果编译成native code又要不要优化一下呢?

我打算顺便骗到源码,但是居然不给我!不过他倒是送我一对注册名和注册码。拿到程序一看关于窗口还写着“演示版”,不就是传说中的Demo吗!算了,不管这些细节了。

我拿到的程序有以下几个:Timer_nc_speed.exe(256KB)[Native-Code并进行代码速度优化]、Timer_p-
code.exe(80KB)[P-code程序]、Timer_nc_length.exe(240KB)[Native-Code并进行代码长度优
化]、Timer_nc_none.exe(240KB)[Native-code无优化]。可以看到,P-code程序非常小,但是它运行必须要VB的
VM DLL。

首先来看看这个程序是如何进行授权及验证的:

打开后主窗口:

上面有一个注册按钮正好遮掉计时器的“分”的十位(也就是说你计时不能超过10分钟,否则你自己都不知道过了多久),然后会过随机的时间跳出“请尽快注
册”的窗口,输入了注册码之后会提示“注册码已存储,请立即重启程序,如果正确下次将不再有限制。”看来是纯重启验证类型的。不过貌似还有个突破点,就是
按“倒”按钮(即倒计时)会提示“未注册版本不支持倒计时,是否立即注册?y/n”。也许可以从这个对话框入手哦!

另外,这个软件还有个版本更新历史(我去,都更新到构造23了),里面有一句话引起我的注意:

更改 VB 内部 MSGBOX 成为 user32.dll 的 API 里的 "MessageBoxA".

额,这么说,所有对话框在入口点前的API表(后面会提到)里下断点都是无效的了。



现在,拿出几个神器(网上有提到的): SMARTCHECK,WKTVBDebugger,VB Decompiler。当然OD也用来看看效果。

首先是P-code程序载入OD:入口点的特征就是push XXXXXXXX,Call XXXXXXXX。入口点上方是各种VB虚拟机DLL里面的API,下面就是各种OD识别不出的东西。(不是汇编代码当然识别不出啦)

然后是Native-code程序载入OD:其实做各种优化的都差不多,首先入口点特征与P-code的差不多,上方也是一张表(不过好像更大?),下方也有一段数据,但是再往下拉会发现:

 00408C60   > \55            push ebp
 00408C61   .  8BEC          mov ebp,esp
 00408C63   .  83EC 18       sub esp,18
 00408C66   .  68 26314000   push <jmp.&MSVBVM60.__vbaExceptHandler> ;  SE 句柄安装
 00408C6B   .  64:A1 0000000>mov eax,dword ptr fs:[0]
 00408C71   .  50            push eax
 00408C72   .  64:8925 00000>mov dword ptr fs:[0],esp
 00408C79   .  B8 D0010000   mov eax,1D0
 00408C7E   .  E8 9DA4FFFF   call <jmp.&MSVBVM60.__vbaChkstk>
 00408C83   .  53            push ebx
 00408C84   .  56            push esi
 00408C85   .  57            push edi
 00408C86   .  8965 E8       mov dword ptr ss:[ebp-18],esp
 00408C89   .  C745 EC B8114>mov dword ptr ss:[ebp-14],Timer_nc.0040>
 00408C90   .  8B45 08       mov eax,dword ptr ss:[ebp+8]
 00408C93   .  83E0 01       and eax,1
 00408C96   .  8945 F0       mov dword ptr ss:[ebp-10],eax
 00408C99   .  8B4D 08       mov ecx,dword ptr ss:[ebp+8]
 00408C9C   .  83E1 FE       and ecx,FFFFFFFE

这不是我们熟悉的汇编代码了嘛呵呵。
所以说,到目前为止,P-code的防破解作用远远大于Native-code的。
<破解思路1>在API上面下断点跟踪......
这个对于P-code程序是完全无效的了,但是对于Native Code的可以一试。
首先,以他的水平来说,比较注册码肯定是明码比较,但是我没那么无聊去做内存注册机,来爆破试试看。
打开Timer_nc_XXX.exe,在入口点前面的大表这里下断:

004032E2   $- FF25 B0104000 jmp dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]           ;  MSVBVM60.__vbaStrCmp
运行程序,第一次断下先放行,结果窗口就出来了,说明第一次断下就已经到了关键.
重载程序,断下后F8,来到这里:

 734793DA >  FF7424 08       push dword ptr ss:[esp+8]
 734793DE    FF7424 08       push dword ptr ss:[esp+8]
 734793E2    6A 00           push 0
 734793E4    E8 44E6FFFF     call MSVBVM60.__vbaStrComp
 734793E9    C2 0800         retn 8

再按Alt+F9来到这里:
00414BAE   .  50            push eax
 00414BAF   .  68 78734000   push Timer_nc.00407378
 00414BB4   .  E8 29E7FEFF   call <jmp.&MSVBVM60.__vbaStrCmp>
 00414BB9   .  F7D8          neg eax                                              ;  here
 00414BBB   .  1BC0          sbb eax,eax
 00414BBD   .  F7D8          neg eax
 00414BBF   .  F7D8          neg eax

这里已经是程序的代码段了,可以更改代码了,继续跟踪看看。
00414BC1   .  66:8985 68FEF>mov word ptr ss:[ebp-198],ax
 00414BC8   .  8D4D D8       lea ecx,dword ptr ss:[ebp-28]
 00414BCB   .  E8 60E7FEFF   call <jmp.&MSVBVM60.__vbaFreeStr>
 00414BD0   .  8D4D B4       lea ecx,dword ptr ss:[ebp-4C]
 00414BD3   .  E8 B6E6FEFF   call <jmp.&MSVBVM60.__vbaFreeVar>
 00414BD8   .  0FBF85 68FEFF>movsx eax,word ptr ss:[ebp-198]
 00414BDF   .  85C0          test eax,eax
 00414BE1   .  0F84 E60B0000 je Timer_nc.004157CD     ;这里跳了
 00414BE7   .  C745 FC 1F000>mov dword ptr ss:[ebp-4],1F
 00414BEE   .  66:8365 DC 00 and word ptr ss:[ebp-24],0
 00414BF3   .  C745 FC 20000>mov dword ptr ss:[ebp-4],20
 00414BFA   .  68 7C744000   push Timer_nc.0040747C                                 ;  UNICODE "Timer_Regcode.inf"
 00414BFF   .  6A 01         push 1
 00414C01   .  6A FF         push -1
可以看到,00414BE1这里跳转跳了,但是应该是不要跳的,因为下面的代码才开始读取注册码. 于是NOP。
 00414C03   .  6A 01         push 1
 00414C05   .  E8 78E6FEFF   call <jmp.&MSVBVM60.__vbaFileOpen>
 00414C0A   >  C745 FC 21000>mov dword ptr ss:[ebp-4],21
 00414C11   .  6A 01         push 1
 00414C13   .  E8 64E6FEFF   call <jmp.&MSVBVM60.#571>
 00414C18   .  0FBFC0        movsx eax,ax
 00414C1B   .  85C0          test eax,eax
 00414C1D   .  0F85 8E000000 jnz Timer_nc.00414CB1
 00414C23   .  C745 FC 22000>mov dword ptr ss:[ebp-4],22
但是接下来问题也随之出现,就是说这个文件不存在,却要被打开(00414C05处),会出现异常的,所以这句代码也得NOP。不过这个程序令我惊讶的 是,居然自带了异常处理程序!现在不能观摩,否则异常不断产生会导致程序卡死,先要把所有异常都处理好,不过那时候也不能再观摩了.
所以还要NOP:
 00414C05   .  E8 78E6FEFF   call <jmp.&MSVBVM60.__vbaFileOpen>
00414C13   .  E8 64E6FEFF   call <jmp.&MSVBVM60.#571>
另外,为了不浪费程序的感情不断读取文件,我们把00414C1D的jnz改为jmp跳过读取阶段. 然后就到了这里:
00414CB1   > \C745 FC 2B000>mov dword ptr ss:[ebp-4],2B
 00414CB8   .  6A 01         push 1
 00414CBA   .  E8 ABE5FEFF   call <jmp.&MSVBVM60.__vbaFileClose>
 00414CBF   .  C745 FC 2C000>mov dword ptr ss:[ebp-4],2C
 00414CC6   .  C785 ECFEFFFF>mov dword ptr ss:[ebp-114],Timer_nc.004>
 00414CD0   .  C785 E4FEFFFF>mov dword ptr ss:[ebp-11C],8008
 00414CDA   .  C785 DCFEFFFF>mov dword ptr ss:[ebp-124],Timer_nc.004>
 00414CE4   .  C785 D4FEFFFF>mov dword ptr ss:[ebp-12C],8008
 00414CEE   .  8B45 08       mov eax,dword ptr ss:[ebp+8]
 00414CF1   .  05 A4000000   add eax,0A4
 00414CF6   .  50            push eax
 00414CF7   .  8D85 E4FEFFFF lea eax,dword ptr ss:[ebp-11C]
 00414CFD   .  50            push eax
 00414CFE   .  8D45 B4       lea eax,dword ptr ss:[ebp-4C]
 00414D01   .  50            push eax
 00414D02   .  E8 57E5FEFF   call <jmp.&MSVBVM60.__vbaVarCmpNe>
 00414D07   .  50            push eax
 00414D08   .  8B45 08       mov eax,dword ptr ss:[ebp+8]
 00414D0B   .  05 B4000000   add eax,0B4
 00414D10   .  50            push eax
 00414D11   .  8D85 D4FEFFFF lea eax,dword ptr ss:[ebp-12C]
 00414D17   .  50            push eax
 00414D18   .  8D45 A4       lea eax,dword ptr ss:[ebp-5C]
 00414D1B   .  50            push eax
 00414D1C   .  E8 3DE5FEFF   call <jmp.&MSVBVM60.__vbaVarCmpNe>
 00414D21   .  50            push eax
 00414D22   .  8D45 94       lea eax,dword ptr ss:[ebp-6C]
 00414D25   .  50            push eax
 00414D26   .  E8 39E5FEFF   call <jmp.&MSVBVM60.__vbaVarOr>
 00414D2B   .  50            push eax
 00414D2C   .  E8 6FE5FEFF   call <jmp.&MSVBVM60.__vbaBoolVarNull>
 00414D31   .  0FBFC0        movsx eax,ax
 00414D34   .  85C0          test eax,eax
 00414D36   .  0F84 6D090000 je Timer_nc.004156A9
文章太长了,文档和软件下载:
软件下载:链接:http://pan.baidu.com/s/1eQARBME 密码:f28c
文档:http://pan.baidu.com/s/1hqERqVM 备用连接:链接:http://pan.baidu.com/s/1hqIpg9Y 密码:4p8u
注:原文出自吾爱,我觉得写的很好故转载,一边日后学习研究使用.如有问题,请联系我.admin#mrxn.net


Mrxn 发布于 2015-7-25 19:19

破解火车票上的身份证号码

首先我在百度上找到了一个他人的火车票图片
huoche_1
接着从图片里我们可以获取到信息如下:

姓名 梅勇
性别 男 (倒数第四位至倒数第二位3位数为顺序码,顺序码为奇数所以为男性)
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)
来自 武汉市新洲区 (身份证号码前六位代表地区)
(可参考http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/200406/t20040607_38302.html)

身份证号码:4201171988xxxx1638

得到上述消息后,我们可以通过身份证号码验证算法对其进行有效性验证和排除。
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)

我用JS实现了一个有效性验证,代码如下:


var sfz_qian="4201171988";
var sfz_hou4="1638";
var sfzhm="";
for(i=1;i<=12;i++)
{
  //为了程序的方便,我就假设每个月有31天
  for(j=1;j<=31;j++){
        if(i<10){
            if(j<10){
                sfzhm=sfz_qian+"0"+i+"0"+j+sfz_hou4;
            }else{
                sfzhm=sfz_qian+"0"+i+j+sfz_hou4;
            }
            result=getvalidcode(sfzhm);
                if(result!=false){
                        console.log(result);
                }

        }else{
            if(j<10){
                               sfzhm=sfz_qian+i+"0"+j+sfz_hou4;
                        }else{
                               sfzhm=sfz_qian+i+j+sfz_hou4;
                        }
            result=getvalidcode(sfzhm);
                if(result!=false){
                  console.log(result);
                    }

        }       

        }
    }

function getvalidcode(sfzhm_new){

var sum=0;
var weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
var validate=['1','0','X','9','8','7','6','5','4','3','2'];
for(m=0;m<sfzhm_new.length-1;m++){
sum+=sfzhm_new[m]*weight[m];
}
mode=sum%11;
if(sfzhm_new[17]==validate[mode]){
    return sfzhm_new;
}else{
    return false;
}

}

代码运行后如下:

huoche_2

接着我们导出35条记录做为字典,拿到12306进行暴力添加常用联系人,最后我们得到了该图片上面的身份证号码了

huohce_3

文章来自网络.如有侵权,请联系管理员.



Mrxn 发布于 2015-7-13 15:09

crack tools share

12.jpg


1.吾爱破解虚拟机,里面包括论坛工具包.而且此虚拟机能有效防止crack软件的时候被格盘!

地址:http://pan.baidu.com/s/1sj2sTBZ

2.一蓑烟雨 论坛2015的最新工具包集合,一蓑烟雨-国内知名的逆向论坛之一.不解释!

地址:http://pan.baidu.com/s/1eQhaFyM

3.更多的crack小工具请前往: crack tools




Mrxn 发布于 2015-5-3 09:56

个人资料

    blogger

    Mrxn

    一个关注网络安全,热爱黑客技术的好青年!

搜索

最新评论