这题很好,一环扣一环。
首先PEID查看

第一次见MASM32 汇编直接编写。前几道题有高级语言编写,有现成的反编译工具。但这道题没有,只能手工OD调试
用OD加载搜索字符串

发现破解成功的条件是ax == 0x10,

于是找给ax 赋值的代码,ax的值与[403166]有关

于是利用内存断点,找到所有写入[403166]有关的代码

设置内存断点,发现了猫腻




分析得[403188] + 0x9112478 必须为0
将内存断点设在[403188],找到了下面的算法

00401361   .  8D3D 8C314000 LEA EDI,DWORD PTR DS:[40318C]                   ;  name
00401367   .  0FBE05 683140>MOVSX EAX,BYTE PTR DS:[403168]                  ;  ax = i
0040136E   .  03F8          ADD EDI,EAX
00401370   .  FE05 68314000 INC BYTE PTR DS:[403168]                        ;  i ++
00401376   .  A1 88314000   MOV EAX,DWORD PTR DS:[403188]                   ;  密码的16进制
0040137B   .  8B25 A0314000 MOV ESP,DWORD PTR DS:[4031A0]
00401381   .  40            INC EAX                                         ;  密码 ++
00401382   .  FF05 88314000 INC DWORD PTR DS:[403188]
00401388   .  3307          XOR EAX,DWORD PTR DS:[EDI]                      ;  密码 ^ name[i] 这里有个坑4字节异或
0040138A   .  A3 88314000   MOV DWORD PTR DS:[403188],EAX                   ;  密码 = 上式
0040138F   .  803D 68314000>CMP BYTE PTR DS:[403168],10                     ;  if i != 10 loop

算法有了注意这里有个坑,00401388 . 3307 XOR EAX,DWORD PTR DS:[EDI]这里是与四字节异或,小端序要转成大端序
最后写出exploit

name = raw_input("name:")
s = 'A'+name+'\x00'*(0x14-len(name)) #A 用来填充
s = bytes(s).decode('ascii')
print s
sub = 0xffffffff - 0x9112478 + 1
for i in range (0x10,0,-1):string = '0x'+'0'*(2-len(hex(ord(s[i+3]))[2:]))+hex(ord(s[i+3]))[2:]+ '0'*(2-len(hex(ord(s[i+2]))[2:]))+hex(ord(s[i+2]))[2:] + '0'*(2-len(hex(ord(s[i+1]))[2:]))+hex(ord(s[i+1]))[2:]+ '0'*(2-len(hex(ord(s[i]))[2:]))+hex(ord(s[i]))[2:]sub ^= int(string,16)sub -= 1
print sub

Crackme 23相关推荐

  1. crackme算法分析---CRC32算法的妙用

    loveasm的crackme算法分析-----CRC32算法的妙用 [作者]:onlyu[FCG][DFCG] [软件介绍]:loveasm[YCG][DFCG]兄弟的crackme,主要锻炼算法分 ...

  2. [反汇编练习] 160个CrackMe之023

    [反汇编练习] 160个CrackMe之023. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  3. [反汇编练习] 160个CrackMe之021

    [反汇编练习] 160个CrackMe之021. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  4. 逆向分析CrackMe系列——CrackMe004之注册码算法分析

    逆向分析CrackMe系列--CrackMe004注册码算法分析 本文内容承接前面的工作,记录了自己每一步的分析过程和思路,由于内容较长,故单独写一篇. (本系列的CrackMe资源均来自我爱破解网) ...

  5. 170604 逆向-CrackMe之013

    1625-5 王子昂 总结<2017年6月3日> [连续第245天总结] A.CrackMe(13) B.中间几个的难度是三星和???--吓到我了,完成第一页以后再去挑战这几个吧 第13个 ...

  6. crackme例子2

    样本 jadx clacSnFuntion jni函数,ida分析 关键位置函数一片红色,可能有动态加解密 如果不分析具体解密算法,可内存dump解密后整个so frida如下: function d ...

  7. 逆向一个IOS CrackMe

    <0x01> 前言 本文涉及的CrackMe是看雪IOS安全小组招募的开门题目.题目提供了一个IOS应用,要求给出该应用的注册机.作为开门题目,其控制逻辑比较简单,为了实现注册机,主要的工 ...

  8. 五星crackme看着汇编写C已吐血

    其实我一开始是冲着这个去了,一个神秘的CORE组织不知道为何物,好像很厉害的样子促就我想把他弄出来.软件是加壳的,这个没什么好讲的,开始就是pushad,于是在栈上下访问断点立马就能拿到magic j ...

  9. CrackMe练习之ACG TRIAL Crackme 1.0

    这里有题目和作者讲解: http://bbs.pediy.com/showthread.php?t=32849 这是一个形式和算法都很简单的破解练习题.先运行之,记住失败弹出的提示消息,然后OD打开, ...

  10. CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题

    centos安装docker.ce遇到报错,提示如下 # yum install -y docker-ce Last metadata expiration check: 0:01:49 ago on ...

最新文章

  1. 九个Console命令,让js调试更简单
  2. 【面试相关】python实现快速幂取余算法详解
  3. 收藏:深度剖析产品经理的「核心竞争力」
  4. Android开发小技巧之商品属性筛选与商品筛选
  5. Scikit-learn 秘籍 第三章 使用距离向量构建模型
  6. android115 自定义控件
  7. pip install ipython出错_Python -- 关于pip安装Ipython
  8. 超链接为什么在HTML的head可以运行,悬赏问答 - HTML开发中,为什么最好把CSS的link标签放在head/head之间??...
  9. 企业AD域管理利弊_如何避免企业AD域管理中的各种弊端?
  10. MySQL环境变量的配置(详细教程)
  11. 中国占三分之一!CBinsights世界最新独角兽排名出炉
  12. [译]写给初学者的Tensorflow介绍 - 2
  13. UT2016学习笔记
  14. 数据安全传输平台项目笔记
  15. k2000显卡相当于gtx_电脑中的显卡是什么样干什么样的?NVDIA推出的两块Quadro显卡K1000M和K2000M性能究竟差多少...
  16. 给大家推荐一个软件:视频广告过滤大师
  17. 基于SVM支持向量机的车牌分割识别算法matlab仿真——详细版
  18. python运用三角学通过方位角仰角与距离计算三维坐标
  19. 【转】最大后验概率(MAP)- maximum a posteriori
  20. 贝叶斯网专题4:概率推理中的变量消元方法

热门文章

  1. 阿里巴巴矢量图标的应用
  2. Vivado2018.3手把手详细下载
  3. iview 循环 卡片 更好图标 背景色 标题
  4. (10)ERStudio
  5. Drools教程(基础篇)——创建项目
  6. CMDN Club每周精选(第7期)
  7. 解构OPPO IoT:“开放生态”+“用户思维”,“智美生活”雏形已显
  8. [迁移] Luac的使用
  9. ElasticSearch + kibana 基础查询文档大全
  10. Houdini图文笔记:Houdini Indie正版声明