吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18366|回复: 24
收起左侧

[Android KeyGenMe] 一个小CM给大家玩玩

  [复制链接]
qtfreet00 发表于 2016-1-2 00:54
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 世事繁华皆成空 于 2016-1-2 23:18 编辑

本来这个CM是暂时不准备放出来的,结果代码被我弄丢了,只找到一个早期版本,就给大家玩玩把,基本都没有做加密,应该对大家不难


此帖不允许发布答案哦,有答案的欢迎在移动区发帖简述一下思路和手法,有大大的加分的哦

KeyGenMe理当是不能爆破的哦,欢迎算出答案




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 2热心值 +2 收起 理由
rainlee + 1 我很赞同!但我不会!
spguangz + 1 我很赞同!但我不会!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

熊大猫来了 发表于 2016-1-2 21:14
本帖最后由 熊大猫来了 于 2016-1-2 21:16 编辑

apktool反编译出来有MainActivity、check、a、b四个类,分析了一下smali,b实现的是按钮的listener,a做了初步变换,check用于LoadLibrary调用libcheck.so这个库
大致流程是这样的,onButton获取注册码以后,逐字节转换为十进制ascii,然后和数字4异或,结果保存成十进制字符串的形式,传入so文件,以上步骤可以先静态分析smali文件,然后用Eclipse动态调试smali文件验证分析的正确性。
传送门:使用Eclipse调试反编译的smali http://www.blogfshare.com/eclipse-debug-smali.html
进入so以后难度也不大,调用了库里的Java_com_wuaipojie_crack01_check_mcheck函数(库里说:谁调我?),里面的逻辑也比较简单,主要就是一个Base64,用于比较的死码是这个“MzY0MTMyMzIzNTEyNjEyNDEyNTEyMg==”
结果先不说了,上面的流程说的也比较笼统,因为我也是刚入Android坑一个多月的菜鸟,通过看帖子和调一些程序发现其实有的帖子像写实验说明书一样一步步手把手教你并不见得就是最好的,对我们新手来说最好还是能通过自己查找各种资料摸索着走一下这一套流程,发现问题,分析问题,通过自己的途径解决问题,其实比知道结果收获大得多。(好吧其实还是因为我懒)
有个小问题,lib文件夹下有两个目录,一个arm的一个x86的,我分析的时候用的x86的,想来两个逻辑应该一样,x86的分析起来顺手。然后分析完了想IDA远程调试一下,发现必须用arm的打开才能选Android的远程调试器,结果打开以后是这样的

求大神来解答

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

点评

代码段是加过密了  发表于 2016-1-2 21:47

免费评分

参与人数 1热心值 +1 收起 理由
qtfreet00 + 1 我很赞同!

查看全部评分

冥界3大法王 发表于 2018-2-11 20:33
0x6ed0a348        com/wuaipojie/crack01/a        a        (Ljava/lang/String;I)Ljava/lang/String;        (null)        -1
0x6ed0a380        com/wuaipojie/crack01/a        a        ([I)Ljava/lang/String;        (null)        -1
0x6ecfd9c0        com/wuaipojie/crack01/b        onClick        (Landroid/view/View;)V        (null)        -1
0x6ecdb1b0        com/wuaipojie/crack01/MainActivity        a        (Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/EditText;        (null)        -1
0x6ecdb1e8        com/wuaipojie/crack01/MainActivity        b        (Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/TextView;        (null)        -1
0x6ed0a3f0        com/wuaipojie/crack01/check        <clinit>        ()V        (null)        -1
0x6ed0a428        com/wuaipojie/crack01/check        mcheck        (Ljava/lang/String;)Z        (null)        -2

[Asm] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
.class Lcom/wuaipojie/crack01/b;
.super Ljava/lang/Object;
 
# interfaces
.implements Landroid/view/View$OnClickListener;
 
 
# instance fields
.field final synthetic a:I
 
.field final synthetic b:Lcom/wuaipojie/crack01/MainActivity;
 
 
# direct methods
.method constructor <init>(Lcom/wuaipojie/crack01/MainActivity;I)V
    .locals 0
 
    iput-object p1, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    iput p2, p0, Lcom/wuaipojie/crack01/b;->a:I
 
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
 
    return-void
.end method
 
 
# virtual methods
.method public onClick(Landroid/view/View;)V
    .locals 3
 
    iget-object v0, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    invoke-static {v0}, Lcom/wuaipojie/crack01/MainActivity;->a(Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/EditText;
 
    move-result-object v0
 
    invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
 
    move-result-object v0
 
    invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;
 
    move-result-object v0
 
    invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;
 
    move-result-object v0
 
    invoke-virtual {v0}, Ljava/lang/String;->isEmpty()Z
 
    move-result v1
 
    if-eqz v1, :cond_0
 
    iget-object v0, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    const-string v1, "\u4e0d\u80fd\u4e3a\u7a7a\u7684\u54e6"
 
    const/4 v2, 0x0
 
    invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
 
    move-result-object v0
 
    invoke-virtual {v0}, Landroid/widget/Toast;->show()V
 
    :goto_0
    return-void
 
    :cond_0
    iget v1, p0, Lcom/wuaipojie/crack01/b;->a:I
 
    invoke-static {v0, v1}, Lcom/wuaipojie/crack01/a;->a(Ljava/lang/String;I)Ljava/lang/String;
 
    move-result-object v0
 
    invoke-static {v0}, Lcom/wuaipojie/crack01/check;->mcheck(Ljava/lang/String;)Z
 
    move-result v0
 
    
 
    iget-object v0, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    invoke-static {v0}, Lcom/wuaipojie/crack01/MainActivity;->b(Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/TextView;
 
    move-result-object v0
 
    const-string v1, "\u606d\u559c\uff0c\u4f60\u7adf\u7136\u731c\u4e2d\u7684\u5c0f\u660e\u7684\u5fc3\u601d"
 
    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
 
    iget-object v0, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    invoke-static {v0}, Lcom/wuaipojie/crack01/MainActivity;->b(Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/TextView;
 
    move-result-object v0
 
    const v1, -0xff0100
 
    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTextColor(I)V
 
    goto :goto_0
 
    :cond_1
    iget-object v0, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    invoke-static {v0}, Lcom/wuaipojie/crack01/MainActivity;->b(Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/TextView;
 
    move-result-object v0
 
    const-string v1, "\u6ca1\u6709\u8fd9\u4e48\u7b80\u5355\u5427"
 
    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
 
    iget-object v0, p0, Lcom/wuaipojie/crack01/b;->b:Lcom/wuaipojie/crack01/MainActivity;
 
    invoke-static {v0}, Lcom/wuaipojie/crack01/MainActivity;->b(Lcom/wuaipojie/crack01/MainActivity;)Landroid/widget/TextView;
 
    move-result-object v0
 
    const/high16 v1, -0x10000
 
    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTextColor(I)V
 
    goto :goto_0
.end method

可坏 发表于 2016-1-2 01:05
chinaldc 发表于 2016-1-2 01:08
楼主大大换头像了、、、
imemy 发表于 2016-1-2 01:15
CM是啥么
小九i 发表于 2016-1-2 02:23
http://www.52pojie.cn/thread-55905-1-1.html

CM是什么?crackme是什么?这是什么东西?LZ发的什么?


他们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳



善用搜索。随手就回复问CM是啥  看着都心累
狂暴补师亚丝娜 发表于 2016-1-2 08:30
晕,安卓的啊。我还意思是exe呢!术业有专攻,我不会安卓的,哈哈
hix7 发表于 2016-1-2 09:16
感谢大大,一会下载了试试。
左岸麦田 发表于 2016-1-2 10:25
支持下新版块了。
chinaboy008 发表于 2016-1-2 12:14
感谢大大,
smile1110 发表于 2016-1-2 18:00
还不许爆破!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-9 05:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表