精华内容
下载资源
问答
  • CrackMe

    2019-05-13 21:45:06
    CrackMe集合,一共160个

    CrackMe集合,一共160个

    展开全文
  • Acid burn CrackMe

    2017-07-07 08:31:19
    Acid burn CrackMe
  • hook Crackme

    2021-01-06 17:45:57
    [超级详细] FrIDA Hook和Xposed Hook 再搞Crackme 推荐上篇文章地址:[超级详细]实战分析一个Crackme的过程 一、Frida Hook过登录密码验证 1、frida 安装配置与手机互通 安装firda:pip install frida Frida 下载...

    [超级详细] FrIDA Hook和Xposed Hook 再搞Crackme

    推荐上篇文章地址:[超级详细]实战分析一个Crackme的过程

    一、Frida Hook过登录密码验证

    1、frida 安装配置与手机互通

    安装firda:pip install frida Frida 下载地址

    安装frida-tools:pip install frida-tools

    frida server 根据手机CPU型号下载合适的推送到手机 frida server 下载地址

    我下载的是:frida-server-14.0.5-android-x86(需要解压缩成单文件之后推送手机)

    连接手机或者mumu模拟器:adb connect 127.0.0.1:7555 (7555为mumu模拟器端口号,其它百度)

    将文件push 进手机的指定目录下:adb push frida-server-14.0.5-android-x86 /data/local/tmp/

    进入手机端命令:adb shell

    切换获取手机的root权限:su

    查找文件是否在手机中:cd /data/local/tmp/

    查看路径下的文件并看文件的权限:ls -l

    拥有root权限更改文件的权限为777:chmod 777 frida-server-14.0.5-android-x86

    在手机中启动运行该文件: ./frida-server-14.0.5-android-x86 &

    电脑运行检查手机端服务是否开启成功: frida-ps -U

    windows运行 端口转发到PC:adb forward tcp:27043 tcp:27043

    点击查看:Frida Javascript Api

    若文件推送错误,删除办法:

    进入手机端命令:adb shell切换获取手机的root权限:su进入系统内指定文件夹:cd /data/local/tmp/列表显示当前文件夹内容 :ls删除名字为xxx的文件夹及其里面的所有文件:rm -r xxx删除文件指定文件xxx :rm xxx

    你们按照上面的命令直接一步步执行就行,因为我之前已经push过,在这里就不在演示了,直接演示开启frida-server的命令,如果在检查的时候,发现没有开启,就去做一次端口的转发。

    image

    </ignore_js_op>

    2、Frida Hook实现过密码验证

    先使用MUMU模拟器打开软件随便输入密码,进入提示 验证码校验失败

    image

    </ignore_js_op>

    将软件拖入jadx去分析一下软件代码的执行流程,直接使用软件的搜索功能,发现只有一条数据并进去看一下。

    image

    </ignore_js_op>

    分析一下软件代码执行,分析出执行密码校验的方法,从而来来确定软件Hook的具体的位置,如下图所示:

    image

    </ignore_js_op>

    接着就是撸代码了,我们打开 PyCharm 工具开始写Python+js的Hook代码对软件实现Hook,代码如下:

    import frida, sys
    
    jscode = '''
    Java.perform(function () {
        //这里是要Hook的软件具体位置的   包名 + 类名
        var Testsig = Java.use('com.yaotong.crackme.MainActivity');
        //这里写要Hook的方法名  以及参数
        Testsig.securityCheck.implementation=function(str){
            //直接返回为true
            return true;
        };
    });
    '''
    
    def on_message(message, data):
        print(message)
    
    process = frida.get_usb_device().attach('com.yaotong.crackme')  # 要Hook的软件包名
    script = process.create_script(jscode)
    script.on('message', on_message)
    print('运行完毕!!!请随便输入密码进入软件。')
    script.load()
    sys.stdin.read()

    之后在mumu模拟器中打开AliCrackme软件后,并运行上面的Hook代码后,直接在软件的密码框里输入密码就进入软件啦,如下图所示:

    image

    </ignore_js_op>

    二、Xposed Hook 过登录密码验证

    上面我们已经分析过软件要HooK的方法了,这里就直接来时撸代码了,从创建Android项目开始搞起,如下图:

    image

    </ignore_js_op>

    之后将Android 切换为 Project ,这是为了方便,添加一下xposed开发的一些配置,别搞混了。开发Xposed 模块需要的 jar包下载地址

    image

    </ignore_js_op>

    之后将下载的开发Xposed 模块需要的两个jar包拷贝到项目的libs目录下,如下图所示:

    image

    </ignore_js_op>

    然后在文件名为 build.gradle 下的dependencies 中添加这两条信息 之后如下图所示:

    compileOnly 'de.robv.android.xposed:api:82'
    compileOnly 'de.robv.android.xposed:api:82:sources'
    image

    </ignore_js_op>

    然后在AndroidManifest.xml将这个应用标识为一个Xposed模块,把下面的代码语句添加在如下图所示位置:

    用途解释:
    xposedmodule下的value为true时表示自己是一个xposed模块
    xposeddescription下的value中的文字就是对模块的描述说明。

    <meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="Hook AliCrackme的模块" />
        <meta-data
            android:name="xposedminversion"
            android:value="53" />
    image

    </ignore_js_op>

    新建一个Hook类,类名为HookAlicrackme.java 并写关于Hook界面密码的相关代码,这个类实现IXposedHookLoadPackage接口,并使用了接口中的handleLoadPackage方法

    public class HookAlicrackme implements IXposedHookLoadPackage {
    
        @Override
        public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
            // 将其它的应用剔除掉
            if (!lpparam.packageName.equals("com.yaotong.crackme"))
                return;
            XposedBridge.log("软件的包名是: " + lpparam.packageName);
            findAndHookMethod("com.yaotong.crackme.MainActivity", //这里是Hook软件的包名+类名
                    lpparam.classLoader,
                    "securityCheck",  //这里是Hook的软件的方法名
                    String.class,          //这里是所Hook的方法的参数类型.class
                    new XC_MethodHook() {
    
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            //Hook函数之前执行的代码
                            //传入参数
                            XposedBridge.log("beforeHookedMethod password:" + param.args[0]);
                            //函数返回值
                            XposedBridge.log("beforeHookedMethod result:" + param.getResult());
                        }
    
                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            super.afterHookedMethod(param);
                            //Hook函数之后执行的代码
                            //通过对securityCheck函数的分析发现,只要修改函数的返回值即可实现进入软件
                            param.setResult(true); //改变返回值
                            //传入参数
                            XposedBridge.log("afterHookedMethod password:" + param.args[0]);
                            //函数返回值
                            XposedBridge.log("afterHookedMethod result:" + param.getResult());
                        }
                    }
            );
        }
    }

    接下来在项目中为Xposed模块设置执行的入口,让程序知道从哪里开始执行,如下图所示:

    image

    </ignore_js_op>

    在assets中new一个file,文件名为xposed_init(文件类型选text),并在其中写上你的入口类的完整路径!

    这样,xposed框架就能够读取xposed_init中的信息来找到Hook模块的入口,如下图所示:

    image

    </ignore_js_op>

    接下来项目打包成APK或者直接运行在模拟器上,安装之后进入Xposed 直接可以看到我们的模块已经显示了,选中,然后再到框架的主界面选择软重启直接激活就可以运行使用了!

    image
    </ignore_js_op>

    启动好Hook的软件,在密码框中随便的输入密码:吾爱破解:佚名RJ,看xposed框架里的日志执行,最终默认返回为true,Hook成功,它也在恭喜我:赢了!

    image

    </ignore_js_op>

    三、最后总结

    通过写这篇文章,总结了一下近期学习两个常用框架的知识,学习到了Frida Hook 和 Xposed Hook的使用。

    (不断学习+总结积累=持续性进步)

    Frida Hook的方式:需要下次进入软件的时候,先运行起来软件,然后运行Hook代码即可。

    Xposed Hook的方式:直接打包并激活插件后可以,以后想进入软件直接随便输入密码即可!

    这篇使用两个框架Hook的文章:

    文章对我而言:是一次详细的总结,也可以当做以后自己再Hook软件的一个经验贴和排错贴;

    文章对你而言:是对逆向框架比较感兴趣的同学的一个入门介绍,希望可以帮助到你。

    练习软件地址:https://yirj.lanzoui.com/iehe4ity92h

    展开全文
  • crackme文件

    2021-01-17 17:37:05
    crackme文件 将crackme文件拷贝进seed虚拟机,运行,要求输出’Congratulations!'代表成功。 先用IDA打开,是基于英特尔386处理器的ELF文件: 找到main函数 其中主要的逻辑函数是sub_8048591(): 加上注释的源...

    crackme文件

    将crackme文件拷贝进seed虚拟机,运行,要求输出’Congratulations!'代表成功。
    先用IDA打开,是基于英特尔386处理器的ELF文件:
    在这里插入图片描述

    找到main函数
    在这里插入图片描述

    其中主要的逻辑函数是sub_8048591():
    在这里插入图片描述

    加上注释的源代码:

    int sub_8048591()
    {
      int i; // eax
      _BOOL4 v1; // ebx
      signed int v2; // esi
      int v3; // edx
      int v4; // eax
      char v5; // cl
      char v6; // di
      int v7; // edx
      int result; // eax
      int v9; // [esp+18h] [ebp-8Ch]
      char v10[124]; // [esp+28h] [ebp-7Ch]
    
      dword_8049994("Password, please? ");
      dword_8049990("%s", v10);
      for ( i = 0; v10[i]; ++i )                    // v10有多少个字符,i的值就是几
        ;
      v1 = i == 19;                                 // 如果i的值等于19,v1就赋值为1,否则为0
      v2 = 10;
      do
      {
        v3 = random() % 19;                         // 随机数字下标
        v4 = 0;
        v5 = byte_804869C[v3];                      // 从自带的字符串byte_804869C中取一个字符给v5
        v6 = v10[v3];                               // 从输入的字符串v10中取一个字符给v6
        v9 = v3 + 1;
        v7 = 0;
        while ( v7 < v9 )                           // v7大小在0-v3
        {
          ++v7;
          v4 = 1828812941 * v4 + 12345;             // v4的值相当于12345、1828812941 * v4 + 12345、………
        }
        if ( v5 != ((unsigned __int8)v6 ^ (unsigned __int8)v4) )// 要保证v5 == v6 ^ v4
          v1 = 0;                                   // 否则v1赋值为0
        --v2;
      }
      while ( v2 );
      if ( v1 )                                     // v1 == 1,就输出Congratulations!
        result = dword_8049994("Congratulations!\n");
      else                                          // v1 == 0,就输出Oops..
        result = dword_8049994("Oops..\n");
      return result;
    }
    

    在这里插入图片描述

    所以我们的目标就是不管随机数字下标v3 = random() % 19的值是多少,让v5 == v6 ^ v4恒成立,其实就是让下面三个数组的对应位置的值满足这个等式byte_804869C[i] == v10[i] ^ v4[i]:
    自带的字节数组byte_804869C:
    在这里插入图片描述

    这是个字节数组,只是有些部分被IDA识别成了双字,右键单击byte_804869C->转换为未定义:
    在这里插入图片描述

    得到了20个字节的字节数组byte_804869C[20];
    输入的字符串就是v10;
    v4就是:v4 = 1828812941 * v4 + 12345;
    所以我们可以逆向求出输入的字符串v10 == byte_804869C[20] ^ v4。
    源代码:
    flag.c

    #include<stdio.h>
    
    int main(){
        int byte_804869C[20] = {0x6A,0xFB,0x4C,0x8D,0x58,0xF,0xD4,0xE8,0x94,0x98,0xEE,0x6B,0x18,0x030,0xE0,0x55,0xC5,0x28,0xE,0x90};
        int v4 = 0;
        int i;
        char flag[19];
        for(i = 0 ; i < 19 ; i++){
            v4 = 1828812941 * v4 + 12345;
            flag[i] = byte_804869C[i] ^ v4;
            printf("%c",flag[i]);
        }
        return 0;
    }
    

    运行结果:
    在这里插入图片描述

    得到输入的字符串为:SesameOpenYourself!
    把crackme文件拷贝进seed虚拟机,赋予可执行权限之后运行,输入字符串SesameOpenYourself!:
    在这里插入图片描述
    输出’Congratulations!'代表成功。

    展开全文
  • Crackme 21

    千次阅读 2017-02-19 00:10:52
    Crackme 21

    首先用PEID查看
    这里写图片描述
    无壳且为Delphi 3.0
    直接用OD调试
    搜索字符串
    这里写图片描述

    点击进入程序,利用IDR找到strcmp比较函数。在OD里面下断点
    这里写图片描述
    这里写图片描述
    发现比较的东西在点击事件之前已经完成,于是找赋予内存DS:[42F714]值的代码。
    这里写图片描述
    在第四个事件中找到,下断点
    这里写图片描述

    发现了一个switch表,分别对应a-z A-Z name只能为英语字母
    这里写图片描述
    这里写图片描述
    那么剩下的就简单了
    具体的算法如下:
    输入name的时候会单字符计算DS:[42F714] DS:[42F718]中的值累加的值根据switch表决定。
    最后在比较时DS:[42F714] 与 serial1 比较 DS:[42F718] 与serial2比较
    若同时相等则注册成功。
    这里写图片描述
    就不写注册机了 ,比较麻烦

    展开全文
  • Crackme 2

    千次阅读 2017-02-17 18:43:29
    Crackme 2
  • Crackme 3

    千次阅读 2017-02-17 18:47:19
    Crackme 3
  • Crackme 4

    千次阅读 2017-02-17 19:02:45
    Crackme 4
  • 逆向分析CrackMe系列——CrackMe004 本次进行CrackMe003的逆向分析,前面分析的crackme难度都是一颗星,这次来试试两颗星的 ( ̄▽ ̄)* (本系列的CrackMe资源均来自我爱破解网). 1.运行程序,发现先出现一个小的nag...
  • 逆向分析CrackMe系列——CrackMe001 之前学的逆向都忘干净了,最近又重新学一学,这次从CrackMe入手。 本系列的CrackMe资源均来自我爱破解网.   1. 运行程序,随便输入序列号后弹窗: 2. 进入到主窗口程序后,下...
  • 逆向分析CrackMe系列——CrackMe004 这次进行CrackMe004的逆向分析, 由于003的难度较大,后面再分析, (。・∀・)ノ (本系列的CrackMe资源均来自我爱破解网). 1. 老规矩,先运行程序。发现没有按钮,但是会提示 ...
  • 逆向分析CrackMe系列——CrackMe002 这次进行CrackMe002的逆向分析 AfKayAs (本系列的CrackMe资源均来自我爱破解网).   1. 运行程序,随机输入,进行弹窗: 2. 进行关键程序位置查找:     两种思路: 用相关...
  • Crackme007

    2019-09-26 02:47:17
    Crackme007 的逆向分析 1.程序观察 根据作者的提示,该程序的目的还是隐藏下面的按钮,将图片显示出来。不能使用爆破,打补丁等。最好是找出注册算法。 2.简单查壳 无壳。 3.查看控件ID和事件 ...
  • xctf crackme

    2020-10-22 20:17:31
    xctf crackme 文件用ida打开 发现有壳,查壳发现nspack壳 我用工具没有成功,没办法只能手脱 脱壳参考这位大佬 脱壳成功 逻辑简单 最后贴上我的payload a= [ 0x00000012, 0x00000004, 0x00000008, 0x00000014, 0x...
  • Crackme009

    2019-09-26 02:47:15
    Crackme009 的逆向分析 1.程序观察 009 和 008 相比,多出来了一个输入 Name 的输入框。 分别输入 name 和 key,可以看到错误提示: 2.简单查壳 可以看到,程序没有壳,和 008 一样还是...
  • Crackme008

    2019-09-26 02:47:17
    Crackme008 的逆向分析 1.观察程序 只有一个输入 Key 的输入框。 输入 123,点击 OK。 结果出现了奇怪的报错。上面的报错看不出来是啥意思。 于是使用百度翻译,结果发现居然是德语。 2.查...
  • Crackme019

    2019-09-26 02:47:27
    Crackme019 的逆向分析 1.程序观察 可以看到,程序要求用户名至少要5位。 2.简单查壳 无壳。 3.程序分析 OD 载入程序,搜索字符串。 可以看到,字符串上方不远处有一个跳转语句。在 JNZ ...
  • Crackme017

    2019-09-26 02:47:23
    Crackme017 的逆向分析 1.程序观察 2.简单查壳 使用 VB5 编写的,没有壳。 3.程序分析 使用 OD 载入程序,搜索字符串,点击跟进代码 可以看到不远处就有一个比较语句,下断点,运行程序...
  • CrackMe011

    2019-09-26 02:47:19
    Crackme011 的逆向分析 1.程序观察 可以看到,程序只有让输入的地方,没有确认按钮什么的。在程序左侧,写着 Status: UNREGISTRIERT。 猜想: 程序会根据输入框的变化事件来判断是否正确(其实是不正确的,...
  • Crackme015

    2019-09-26 02:47:24
    Crackme015 的逆向分析 1.程序观察 作者提示我们要把程序启动前的弹窗关闭,而且要找到正确的注册码。 2.简单查壳 程序使用 VB5 编写,无壳。 3.程序分析 首先要去除启动时的弹窗。使用 VB ...
  • Crackme014

    2019-09-26 02:47:21
    Crackme014 的逆向分析 1.程序观察 2.简单查壳 无壳,使用 VB 编写。 3.程序分析 使用 OD 载入程序,搜索字符串 可以看到先前报错时,所提示的语句。 双击跟进程序。 在错误的字符串上方...
  • Crackme010

    2019-09-26 02:47:15
    Crackme010 的逆向分析 1.程序观察 程序只有一个输入 Key 值的地方,尝试输入 "123",程序和 008、009 一样出现的还是德语错误提示,因为这都是一个人制作的小程序。虽然这个程序标注的是 3星难度,但是我...
  • CrackMe022

    2019-09-26 02:47:26
    Crackme022 的逆向分析 1.程序观察 程序只有一个输入框,看起来只有一个注册码的亚子。 2.简单查壳 使用 VB5 编写,无壳。 3.程序分析 使用 OD 载入程序,搜索字符串。 在字符串上面有一个比较...
  • Crackme 23

    千次阅读 2017-02-20 21:59:08
    Crackme 23 这题很好,一环扣一环。题目出的比较细致,有很多细节问题需要注意。也有此题看出,Crackme不能急,要一步一步的来
  • crackme 网站

    2017-01-02 14:48:46
    推荐逆向crackme的网站 点击打开链接
  • CrackMe-CFF Crackme #3

    2017-03-06 22:05:00
    我们先来运行一下这个 crackme(用 PEiD 检测显示是 Delphi 编的),界面如图: 这个 crackme 已经把用户名和注册码都输好了,省得我们动手^_^。我们在那个“Register now !”按钮上点击一下,将会跳出一个对话框...
  • Crackme 22

    千次阅读 2017-02-19 13:08:06
    Crackme 22 字符串拼接比较繁琐,很多干扰的代码。不过认真分析还是可以解决的
  • CFF Crackme #3

    2018-08-08 13:33:20
    《加密与解密》第一版附带光 盘中的 crackmes.cjb.net 镜像打包中的 CFF Crackme #3
  • 第3版第5章习题的"PEDIY CrackMe 2007.chm"集合. CrackMe下载   先将这个CrackMe用PEID侦测下,发现是加了壳的,鉴于还未学到壳的相关知识,还好这里附带提供了解壳后的文件.OD跟踪,Ctrl+N看到熟悉的Get...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,785
精华内容 714
关键字:

crackme