【吾爱】逆向实战crackme160学习记录(一)

article/2025/7/2 3:25:20

前言

最近想拿吾爱上的crackme程序练练手,发现论坛上已经有pk8900总结好的160个crackme,非常方便,而且有很多厉害的前辈已经写好经验贴和方法了,我这里只是做一下自己练习的记录,欢迎讨论学习,感谢吾爱论坛的各位大神。

程序本身无病毒,杀毒报错可无视,如果实在担心也可也用虚拟机练习。

Acid burn

惯例查一下peid,之后打开
在这里插入图片描述

在这里插入图片描述
打开发现作者的留言
在这里插入图片描述
界面是仨按钮,一个账户密码验证,一个序列号验证。

先看账户密码验证吧。
x32dbg打开,输入1111111,1111111点击按钮
在这里插入图片描述
弹出按钮时候先不点击确认,回去让xdbg暂停一下,然后逐步走到用户代码段,
在这里插入图片描述
发现一堆111111111,这里已经是弹出出来的位置了,所以判断部分肯定在上面,往上翻翻ret在哪里,顺带还发现了登陆成功的信息:
在这里插入图片描述

这里的jne就是判断代码了,失败了会直接跳过下面登录成功的部分,所以直接nop掉判断就行
在这里插入图片描述

上面加个断点,下面判断部分nop掉,重新跑一次
在这里插入图片描述

就成功了。
接着看后面那个序列号验证
输入后发现弹出信息是Try again!
在这里插入图片描述
刚刚是调试找到判断的位置,这里换个方式,直接搜索字符串找一下位置
在这里插入图片描述
上面看一眼,看到了jne判断,上面下个断点,设置个nop,重新跑一下
在这里插入图片描述

这里就直接验证成功了,现在可以回头看一下注册机的逻辑。
在这里插入图片描述
这里输入111是账户,22222是密码,断点设置在刚刚找的判断代码的上面,发现这里eax里面是CW-4018-CRACKED,ebx是我们输入的,然后基于这俩寄存器call了一个4039fc的函数,猜测就是判断密码是不是等于这个了,可以直接重新跑一下看一下,也可以去函数里面仔细看一下。
在这里插入图片描述
但是这个CW-4018-CRACKED在最开始查找字符串的时候并没有发现这个字符,大概率是程序运行过程中算出来的(或者换个账户重新试几次也能发现),所以可以找一下这个密码生产的算法。
重新输入aaaa作为账户,2是密码,发现密钥是CW-7954-CRACKED,搜一下cw出现的位置,发现一个可疑的位置,
在这里插入图片描述

这里cw-cracked仨字符单独出现了,猜测是形成密码的函数
分析逻辑后发现:

获取输入字符并计算数值​​:
从内存地址 [ebx+1DC] 获取字符串,调用函数 41AA58 将其存储到局部变量 [ebp-10]。
提取该字符串的首字符 ASCII 值(如字符 '2' 对应 0x32)。
将该 ASCII 值与全局变量 [431750] 的值相乘,结果存回 [431750]。
再将 [431750] 的值翻倍(通过 add 自身),最终得到一个计算后的数值。
​​构造固定字符串部分​​:
将字符串常量 "CW" 和 "CRACKED" 分别复制到局部变量 [ebp-4] 和 [ebp-8]。
​​生成中间数字字符串​​:
调用函数 406718 将全局变量 [431750] 的数值转换为字符串(如 "7954"),存入 [ebp-18]。
​​拼接完整序列号​​:
通过多次 push 操作将 "CW"、"-"、转换后的数字 "7954"、"-" 和 "CRACKED" 拼接成最终字符串(如 "CW-7954-CRACKED"),存储到 [ebp-C]。
​​验证用户输入​​:
从 [ebx+1E0] 获取用户输入的字符串,调用函数 41AA58 存入 [ebp-10]。
调用函数 4039FC 比较生成的字符串 [ebp-C] 和用户输入是否一致,以此验证合法性。

这里ai分析的, 再翻译过来就是取第一个字母的ASNI的数字,如111111中第一个字符1对应数字0x31,然后用它乘以0x29,结果再自增一倍(即x2),将得到的数字转为10进制的字符串,在前加上”CW-”,后加上”-CRACKED”,就组成了用户名对应的注册码。

后面那个单独序列号验证的时候,可以简单的发现序列号“Hello Dude!”,直接明文出来了,没有什么加密的部分,所以不多写了。

Afkayas.1

点开发现是个登录界面
在这里插入图片描述

xdbg打开,搜索字符串,找到提示框的位置
在这里插入图片描述
在这里插入图片描述
往上翻一下找到跳转的代码,下个断点。
跟前面一样的思路,nop掉判断就成功了。
在这里插入图片描述
在这里插入图片描述
光绕过验证是没啥意义的,所以接着找一下加密的逻辑,但是这里生产密码的逻辑感觉不是很好找,根据天清地宁大神的文章,找到了加密的代码部分。

004023ED   .  FF90 A0000000 call dword ptr ds:[eax+0xA0]                   ;  这里获得了账户
004023F3   .  3BC7          cmp eax,edi
004023F5   .  7D 12         jge XAfkayas_.00402409
004023F7   .  68 A0000000   push 0xA0                                      ;  如果返回值小于0就走这里
004023FC   .  68 5C1B4000   push Afkayas_.00401B5C
00402401   .  53            push ebx
00402402   .  50            push eax
00402403   .  FF15 04414000 call dword ptr ds:[<&MSVBVM50.__vbaHresultChec>;  msvbvm50.__vbaHresultCheckObj
00402409   >  8B95 50FFFFFF mov edx,dword ptr ss:[ebp-0xB0]
0040240F   .  8B45 E4       mov eax,dword ptr ss:[ebp-0x1C]                ;  vbaLenBstr 获取 账户的长度,eax返回长度
00402412   .  50            push eax                                       ; /String
00402413   .  8B1A          mov ebx,dword ptr ds:[edx]                     ; |
00402415   .  FF15 E4404000 call dword ptr ds:[<&MSVBVM50.__vbaLenBstr>]   ; \__vbaLenBstr
0040241B   .  8BF8          mov edi,eax                                    ;  账户长度存储在EDI中
0040241D   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]
00402420   .  69FF FB7C0100 imul edi,edi,0x17CFB                           ;  将账户长度 * 0x17CFB
00402426   .  51            push ecx                                       ; /String
00402427   .  0F80 91020000 jo Afkayas_.004026BE                           ; |计算出来的结果>=0x80000000 就异常
0040242D   .  FF15 F8404000 call dword ptr ds:[<&MSVBVM50.#516>]           ; \rtcAnsiValueBstr
00402433   .  0FBFD0        movsx edx,ax                                   ;  返回账户的第一个字符代码
00402436   .  03FA          add edi,edx                                    ;  返回的字符代码与账户长度 * 0x17CFB相加
00402438   .  0F80 80020000 jo Afkayas_.004026BE                           ;  结果大于0x80000000就异常
0040243E   .  57            push edi                                       ;  这个函数是将I4转换成STR
0040243F   .  FF15 E0404000 call dword ptr ds:[<&MSVBVM50.__vbaStrI4>]     ;  msvbvm50.__vbaStrI4
00402445   .  8BD0          mov edx,eax                                    ;  返回值为390240字符串

这段代码实现了一个​​用户名到序列号的转换算法​​,核心逻辑为:
序列号 = (用户名长度 × 97531) + 用户名首字符的ASCII值
最终将计算结果转换为字符串输出

自己写了一下注释如下:

004023ED   call dword ptr ds:[eax+0xA0]  ; 调用COM对象方法获取账户属性
004023F3   cmp eax,edi                   ; 比较返回值
004023F5   jge XAfkayas_.00402409        ; 返回值≥0则跳过错误处理
004023F7   push 0xA0                     ; 错误处理路径开始
...
00402403   call dword ptr ds:[__vbaHresultCheckObj] ; VB错误检查[6,8](@ref)0040240F   mov eax,dword ptr ss:[ebp-0x1C] ; 账户字符串指针
00402412   push eax                       ; 压入字符串参数
00402415   call dword ptr ds:[__vbaLenBstr] ; 调用VB长度函数[9](@ref)
0040241B   mov edi,eax                    ; 长度结果存入EDI00402420   imul edi,edi,0x17CFB          ; edi = edi * 0x17CFB (97531)
00402426   jo Afkayas_.004026BE           ; 溢出检查
0040242D   call dword ptr ds:[rtcAnsiValueBstr] ; 取首字符ASCII值
00402433   movsx edx,ax                  ; 符号扩展ASCII值到32位
00402436   add edi,edx                   ; edi = (长度*97531) + ASCII值
00402438   jo Afkayas_.004026BE           ; 再次检查溢出0040243E   push edi                      ; 压入计算结果
0040243F   call dword ptr ds:[__vbaStrI4] ; 整数转字符串[6,8](@ref)
00402445   mov edx,eax                   ; 字符串句柄存入edx

AfKayAs.2

打开程序
在这里插入图片描述

跟前几个一样,xdbg打开,找到开始函数(vb弹窗函数是rtcMsgBox,可以找到这个),下断点,nop,
在这里插入图片描述

在这里插入图片描述
很简单的流程,但是接着要找到它的算法和逻辑。
往上翻,找到了push ebp;move ebp,esp;
像是程序入口,下断点开始逐步跑
在这里插入图片描述
后面的代码有点长,这里就不全部贴出来了。
跑到下面显示发现eax中出现了输入的账户,走到0x408225的时候突然eax变成了一个新的序列(根据输入的name算出来的),它上面有个函数被call了。
在这里插入图片描述
先下个断点,接着跑,发现eax在后面又发生了多次变化,最后又走到前面原本Nop的判断代码位置,这个再下个断点,俩断点之间的部分就是计算密码的部分。

中间计算逻辑注释一下:

004081F2   push eax         ; 输入字符串地址 (如"3333")
004081F5   call __vbaLenBstr ; 计算字符串长度 (len=4)
004081FD   mov ecx, [ebp-0x18] ; 获取字符串内容
00408200   imul edi, eax, 0x15B38 ; edi = 4 * 88888 = 355552
0040820D   call rtcAnsiValueBstr ; 取首字符ASCII值 ('3'=51)
00408216   add edi, eax     ; edi = 355552 + 51 = 355603
··············
0040821F   call __vbaStrI4  ; 整数转字符串 -> "355603"
0040822A   call __vbaStrMove ; 保存到[ebp-0x20]
···············
004083FB   fmul qword [0x401010] ; 355605.0 * 3.0 = 1066815.0
00408404   fsub qword [0x401018] ; 1066815.0 - 2.0 = 1066813.0
···············
004084E5   fsub qword [0x401020] ; 1066813.0 - (-15.0) = 1066828.0
················
004085D2   call __vbaR8Str   ; 用户输入序列号转浮点 S
004085E2   call __vbaR8Str   ; 计算值转浮点 C=1066828.0
004085F1   fdivr            ; 计算 C / S
0040861A   fcomp qword [0x401028] ; 与密钥常量比较
···············
00408622   test ah, 0x40   ; 检查浮点比较结果是否相等
00408625   je 40862E       ; 不相等则跳转
00408627   mov esi, 1      ; 验证成功标记
0040862E   xor esi, esi    ; 验证失败标记
·············
00408677   je 4086DB        ; 关键跳转:若esi=0则跳失败处理
0040867F   push "You Get It" ; 验证成功提示

逻辑大体是:

# 输入 "3333" 的运算过程:
T1 = len("3333") * 88888 + ord('3') = 355603
T2 = T1 + (10.0 / 5.0)       = 355605.0
T3 = T2 * 3.0                = 1066815.0
T4 = T3 - 2.0                = 1066813.0
T5 = T4 - (-15.0)            = 1066828.0

ajj.1

打开后发现没有按钮
在这里插入图片描述
peid查过没壳,拖进xdbg打开
搜索字符串之后发现有明文信息,找到了弹出的信息。
在这里插入图片描述

回到程序上,发现鼠标挪动到下面灰色方框的时候,会出现提示,说注册成功后会出现一张照片。

xdbg上往上翻翻,发现jne跳转(会先看到一个向上跳转的,然后再往上找),发现这个跳转阻止了程序进入注册成功的代码部分,所以nop掉
在这里插入图片描述
在这里插入图片描述
然后就可以发现照片出来了。

简要总结

一次性做了四个(其实是五个),第五个ajj.2有点复杂,没搞出来逻辑,等之后整理一下接着写,前面这几个都是比较老的cm了,逻辑和破解手法都比较简单,权当是复健一下动调和汇编了。之后再接着更新吧,再次感谢吾爱破解的大神们。


http://www.hkcw.cn/article/SMPtrZoGBX.shtml

相关文章

VSCode Trae Cursor 显示多tab界面

这三个工具如何控制显示做个tab界面&#xff1f;如下图所示&#xff1a; 下面是几个配置&#xff1a; 以上三个配置应该就可以了。有问题留言。

大V:从数据看比亚迪不是车圈恒大 李云飞回应质疑

比亚迪集团品牌及公关处总经理李云飞回应了“车圈恒大”的言论。5月30日,李云飞发文称,“中国主流车企根本不存在所谓的‘车圈恒大’,任何唱衰中国新能源汽车的言论都是不可取的!”李云飞此番回应针对的是长城汽车董事长魏建军之前的言论。魏建军在接受访谈时提到,“现在汽…

县委书记花千万元建10座豪华公厕 摘帽后追求政绩

刚摘掉深度贫困县的帽子,时任县委书记李德明就斥资上千万元建设了10个豪华水冲公厕。日前,吉林省纪委监委公开通报了4起形式主义、官僚主义典型问题,其中提到省农业农村厅原厅长、白城市通榆县委原书记李德明搞劳民伤财的“形象工程”。2023年他升任省农业农村厅厅长,直至2…

江淮集团:尊界项目投入已超百亿 华为合作成果显著

在5月30日晚间的尊界S800发布会上,华为与江淮汽车联合打造的尊界S800正式亮相。发布会开始时,江淮汽车董事长项兴初发表讲话。他提到自2019年与华为开展战略合作以来,双方组建了超过5000人的专属团队,并新建了尊界超级工厂,目前投资已超过百亿元。据此前报道,尊界S800将首…

中央气象台发布暴雨黄色预警 多地将迎大到暴雨

中央气象台今日6时发布暴雨黄色预警,西藏、湖北、湖南等多地部分地区将出现大到暴雨。预计5月31日8时至6月1日8时,西藏东南部、云南西部、重庆大部、贵州北部、湖北大部、湖南北部、江西北部、安徽中部和南部、江苏西南部、浙江中北部等地部分地区有大到暴雨,其中西藏东南部…

端午节为什么要吃粽子 中医养生智慧

说起粽子,人们通常认为它是端午节的节日食品和美味食物,却很少意识到它也是一种养生食品。不同的馅料具有不同的食疗功效。端午节吃粽子不仅是为了纪念屈原,还蕴含着中医传统养生观的智慧。端午时节正值芒种前后,气温升高,雨量增多,南方还会出现连绵的梅雨天气,湿热交织…

中国牵头的国际调解院具体调解什么 填补全球治理赤字

5月30日上午,《关于建立国际调解院的公约》签署仪式在香港举行。外交部长王毅与来自亚洲、非洲、拉丁美洲和欧洲的近60个国家以及联合国等20个国际组织的高级别代表共同出席了这一历史时刻。国际调解院是全球首个专门通过调解解决国际争端的政府间法律组织,其总部落户香港,标…

北京举办“小手拉大手”专场“交通开放日”活动 感受百年公交文化 亲子共学绿色出行

为深入推进交通文化普及,培养青少年绿色出行意识,5月30日“六一”儿童节前夕,市交通委与北京第二实验小学德胜校区一年级同学在北京公交馆联合举办了一场别开生面的专场“交通开放日”活动。此次活动吸引了80名小学生及其家长踊跃参与,让交通文化的种子在孩子们心中生根发芽…

皇马为世俱杯开重奖:夺冠每人100万欧元 重塑辉煌的起点

北京时间5月30日,皇家马德里对成为世俱杯历史上首个冠军的愿望极其强烈。如果成功,将意味着近1.4亿欧元的收入。俱乐部批准了每位球员100万欧元的夺冠奖金。在经历了一个四大皆空的失望赛季后,皇家马德里将全部希望寄托于年底举行的首届国际足联俱乐部世界杯(世俱杯)。俱乐…

李亚鹏又离婚了?妻子发回应:没离,正在一起努力还债 澄清谣言共渡难关

李亚鹏的妻子海哈金喜近日自曝为了缩减开支,一家人将搬到小房子里住。她坦诚分享家庭经济状况后,很快登上了热搜。5月27日,海埃金喜再次发布视频回应网友关心的问题,明确表示她和李亚鹏没有离婚,两人正在一起努力还债。海哈金喜表示,她很意外那条“搬家”视频会上热搜,很…

Sublime Text 4格式化JSON无效的解决方法

前提是安装了 pretty json插件的情况下&#xff0c;用快捷键格式化JSON无效&#xff0c;如果还没有安装pretty json插件&#xff0c;请先自行百度。安装了插件的继续往下看&#xff1a; 在右侧的窗口加入如下代码&#xff1a; { "keys": ["ctrlcommandj"…

GraphRAG: 解锁大模型对叙述性私有数据的检索能力

之前在做一个智能客服相关项目的时候&#xff0c;基于传统RAG方式总感觉回答单一&#xff0c;缺少全局性&#xff0c;微软开源的GraphRAG引起了一些轰动&#xff0c;下面主要通过微软他们自己的微软博客去做相关的一点分析。 简单来说&#xff0c;微软开源的GraphRAG技术&…

CppCon 2014 学习第6天:WRITING DATA PARALLEL ALGORITHMS ON GPUs

什么是 Data-Parallel Algorithms&#xff1f; 数据并行&#xff08;Data Parallelism&#xff09; 是一种并行计算模型&#xff1a; 多个线程同时对不同的数据元素执行相同的操作。与之相对的是“任务并行”&#xff0c;即多个线程执行不同任务。 为什么适合 GPU&#xff1f…

AAAI 2025论文分享│STD-PLM:基于预训练语言模型的时空数据预测与补全方法

本文详细介绍了一篇发表于人工智能顶级会议AAAI 2025的论文《STD-PLM: Understanding Both Spatial and Temporal Properties of Spatial-Temporal Data with PLM》。该论文提出了一种基于预训练语言模型&#xff08;Pre-trained Language Model‌&#xff0c;PLM&#xff09;的…

抗辐照加固CANFD芯片:以车规级设计提升商业航天系统可靠性

摘要 商业航天领域的发展对电子系统的可靠性和抗辐照能力提出了更高要求。本文深入探讨了抗辐照加固CANFD芯片如何借助车规级设计&#xff0c;增强商业航天系统的可靠性。本文以国科安芯CANFD芯片ASM1042为例&#xff0c;通过对芯片单粒子效应脉冲激光试验报告、数据手册及芯片…

曼联亚洲行第二站3-1战胜中国香港队 逆转取胜展现实力

曼联队在5月30日于香港大球场进行的一场友谊赛中,以3:1逆转战胜中国香港队。此前,曼联在马来西亚吉隆坡的首场比赛中以0:1不敌东盟全明星队。本次亚洲之行,曼联最终以一胜一负的成绩结束。比赛开始后不久,曼联便陷入被动,第19分钟被儒尼奥尔左路突破防守抽射入网,比分变为…

高考人数下降 上好大学会更容易吗 报名人数减少竞争减小

2025年全国高考将于6月7日至8日举行。教育部官网消息显示,2025年全国高考报名人数为1335万人,这是自2018年以来首次出现下降。过去几年,全国高考报名人数经历了先降后升的过程。2008年达到顶峰1061万人,随后逐年减少,至2013年降至912万人。2014年至2017年间,报考人数相对…

耿爽敦促美方停止无聊的指责游戏 聚焦外交努力

当地时间5月30日,中国常驻联合国副代表耿爽在安理会审议向乌克兰提供武器问题时发言指出,战场上武器数量不断增加只会加剧对抗、延长战火,敦促美方聚焦当前的外交努力,停止无聊的指责游戏。自战争爆发以来,中方一直呼吁冲突当事方尽快停火止战、开启谈判、恢复和平。遗憾的…

国际油价5月30日小幅下跌 新华社发布图表

新华社图表,北京,2025年5月31日新华社发责任编辑:zhangxiaohua

湖南一溶洞清出垃圾3000斤 排污问题引关注

近日,有网友反映湖南省张家界市慈利县一处天然溶洞遭到人为排污,导致洞内被污染,引起广泛关注。该溶洞位于通津铺镇长峪铺村杨家坡,属于喀斯特地貌,垂直深度约150米。洞内存有陈年垃圾和污水,近期因暴雨导致洞内污水上涨并外溢至溇水。初步调查显示,污染是由当地部分养殖…