Crackme 23[通俗易懂]

Crackme 23[通俗易懂]Crackme23这题很好,一环扣一环。题目出的比较细致,有很多细节问题需要注意。也有此题看出,Crackme不能急,要一步一步的来

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

这题很好,一环扣一环。
首先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

Jetbrains全家桶1年46,售后保障稳定

算法有了注意这里有个坑,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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215454.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ov7725摄像头人脸识别_图像采集是干什么的

    ov7725摄像头人脸识别_图像采集是干什么的目前FPGA用于图像采集传输处理显示应用越来越多,主要原因是图像处理领域的火热以及FPGA强大的并行处理能力。本文以OV7725为例,对摄像头使用方面的基础知识做个小的总结,为后续做个铺垫。  XCLK:工作时钟输入,由主控器产生,频率为24MHz;    HREF:行参考信号输出;  PCLK:像素时钟输出,由XCLK产生,用于控制器采样图像数据(时钟速率<5n…

    2022年9月23日
    3
  • 2022年N1叉车司机考试模拟100题及模拟考试

    2022年N1叉车司机考试模拟100题及模拟考试题库来源:安全生产模拟考试一点通公众号小程序2022N1叉车司机试题为N1叉车司机培训试题理论知识考试题库!2022年N1叉车司机考试模拟100题及模拟考试依据N1叉车司机考试教材。N1叉车司机全部考试题库随时根据安全生产模拟考试一点通上练习全部题库。1、【多选题】《中华人民共和国特种设备安全法》第八十四条规定,特种设备使用单位的特种设备存在严重事故隐患,无改造、修理价值,或者达到安全技术规范规定的其他报废条件,未依法履行报废义务,并办理使用登记证书注销手续的。责令停止使用有关特种设备,处()以

    2025年9月24日
    7
  • 利用JS跨域做一个简单的页面訪问统计系统

    利用JS跨域做一个简单的页面訪问统计系统

    2021年12月8日
    57
  • OpenCV中的width和widthstep[通俗易懂]

    OpenCV中的width和widthstep[通俗易懂]一是width属性;二是widthStep属性。     前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。     在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。     如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。

    2022年6月11日
    34
  • python能用来做什么?这3大主要用途你一定要知道!(实用)

    python能用来做什么?这3大主要用途你一定要知道!(实用)导读:如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?”导读:如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Pyth

    2022年7月3日
    27
  • struts 2 漏洞学习总结

    struts 2 漏洞学习总结struts2最近几个漏洞分析&稳定利用payloadhttp://drops.wooyun.org/papers/9020×00背景看到网上关于struts2利用的文章非常多,但是对于漏洞触发跟踪分析的文档比较少,闲来无事跟踪了一下struts最近吵得比较火的两个漏洞,研究了一下能够稳定利用的payload。0x01S2-008

    2022年7月19日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号