009/160 CrackMe Andrénalin #2
Crack
先随便输入点什么试试
搜索字符串找到注册成功的位置
向上找到比较函数,跟随比较函数的2个地址
可以发现一个是输入的注册码,一个是算好的正确注册码
输入测试通过
算法分析
下面再来看看这个注册码是怎么算出来的
直接用 VB 反编译器基本上代码都出来了,也就没啥难度了
这个东西好像不支持加注释,那我就把代码粘出来吧。
Private Sub Command1_Click() '401FF0loc_00402092: var_58 = Text2.Textloc_004020CA: var_44 = var_58loc_00402126: For var_24 = 1 To Len(var_44) Step 1 //循环累加ASCII码loc_00402132: loc_00402134: If var_108 = 0 Then GoTo loc_004021D6loc_00402169: var_58 = CStr(Mid(var_44, CLng(var_24), 1)) //取一个字符loc_00402176: var_B4 = Asc(var_58)loc_004021A0: var_34 = var_34 + Asc(var_58) //加上它的ASCII码loc_004021CB: Next var_24loc_004021D1: GoTo loc_00402132loc_004021D6: 'Referenced from: 00402134loc_00402204: var_34 = var_34 * 1234567890 //整体乘上1234567890loc_00402276: var_58 = Text1.Textloc_00402298: var_64 = var_58loc_004022CB: If (var_58 = var_34) = 0 Then GoTo loc_00402391loc_004022D1: Beeploc_00402308: var_B4 = "RiCHTiG !"loc_00402327: var_A4 = " RiCHTiG !!!! .... weiter mit dem Nächsten !!!"loc_00402374: var_54 = MsgBox(" RiCHTiG !!!! .... weiter mit dem Nächsten !!!", 48, "RiCHTiG !", 10, 10)loc_0040238C: GoTo loc_00402446loc_00402391: 'Referenced from: 004022CBloc_004023C2: var_B4 = "LEiDER Falsch ! "loc_004023E1: var_A4 = "Leider Falsch! Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir ! Andrenalin@gmx.net"loc_0040242E: var_54 = MsgBox("Leider Falsch! Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir ! Andrenalin@gmx.net", 16, "LEiDER Falsch ! ", 10, 10)loc_00402446: 'Referenced from: 0040238Cloc_00402459: GoTo loc_0040248Floc_0040248E: Exit Subloc_0040248F: 'Referenced from: 00402459loc_004024C0: GoTo loc_00esi
End Sub
最后比较正确的注册码发现还需要把字符串中的第4、9位替换成 “-”
C语言注册机:
#include <stdio.h>
#include <string.h>int main()
{unsigned char username[100];long long id=0;char ids[500];gets(username); //使用gets用户名中可以包含空格//scanf("%s",username);for(int i=0;i<strlen(username);i++){id+=username[i];}id*=1234567890;sprintf(ids,"%lld",id);ids[3]=ids[8]='-';printf("%s",ids);return 0;
}
注册效果:
C语言中文注册机:
中文仍然是GBK编码,解决方案与之前相同。
序列号竟然是负的!
#include <stdio.h>
#include <string.h>int main()
{unsigned char username[100];long long id=0;char ids[500];gets(username);//scanf("%s",username);for(int i=0;i<strlen(username);i+=2){id+=(0xFFFF<<16)+(username[i]<<8)+username[i+1];}id*=1234567890;sprintf(ids,"%lld",id);ids[3]=ids[8]='-';printf("%s",ids);return 0;
}
注册效果:
009/160 CrackMe Andrénalin #2相关推荐
- 160 - 8 Andrnalin.1
环境: Windows xp sp3 打开,就一个Key输入框,输入:goodname,点OK,弹出一个 不明文字的框,反正肯定不对. 查壳,无壳的vb程序.OD载入: 查找字串,翻到最下面: 004 ...
- 160 - 11 Andrnalin.4
环境: Windows xp sp3 打开,这次的界面炫酷多了,就像输保险箱密码. 旁边一个"UNREGISTRIERT"表示还没注册 输入个666666,没反应又没有确认按钮,可 ...
- 160 - 10 Andrénalin.3
环境: Windows xp sp3 打开,是只有一个key,输入个goodname试试,错误...记下错误信息 查壳,无壳的VB程序. 查找字符串: 00402036 UNICODE "k ...
- 160 - 9 Andrnalin.2
环境: Windows xp sp3 打开,这次升级了,有个Name和一个Key,输入: Name:goodname Key:12345678 肯定错误.拿到错误信息的字符串 查壳,无壳的VB程序. ...
- 004/160 CrackMe ajj CKme
分析 可以通过搜索字符串的方式找到 "恭喜恭喜!注册成功" 的提示 在关键跳转上面打断点,输入一组假的 Name Serial 测试 发现点击图片框时程序会停在断点,说明图片框和按 ...
- 002/160 CrackMe Afkayas #1
Crack 依旧可以搜索字符串找到提示的错误信息 之后在上面下断点,单步往下走就可以在寄存器中看到正确的序列号了 KeyGen 直接扔进 IDA 中效果不理想,所以只能分析汇编了 在判断的上面打上断点 ...
- win10桌面图标有小白标_白标移动应用程序,带有react native和babel
win10桌面图标有小白标 In my previous article, I described a solution for white labelling web applications wh ...
- 逆向破解之160个CrackMe —— 008-009
CrackMe -- 008 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 007
CrackMe -- 007 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
最新文章
- 在微服务架构下基于 Prometheus 构建一体化监控平台的最佳实践
- Twitter在超分辨率技术上取得新进展,能还原打码图片
- KNN算法的简单实现
- php php5,初探 PHP5 (一)_PHP
- OD(Ollydbg)简介
- react接收后端文件_React如何从后端获取数据并渲染到前端?
- 业界分享 | 美团搜索排序实践
- bzoj 3517: 翻硬币
- 微软为啥让免费升Win10?
- 3D打印社团的建立和一年的经营
- tgp助手登陆服务器未响应,LOL登陆服务器未响应解决方法
- CSDN是如何让我副业月入过万的?
- Stata:实时估计个股贝塔(beta)系数
- 戴尔r720服务器装爱快路由系统,笔记本虚拟机里安装爱快软路由做单臂路由
- X86_64 GNU汇编、寄存器、内嵌汇编
- 小学生html教程,小学.html
- 区块链、NFT 与元宇宙中的稀缺性技术
- ubuntu安装和卸载软件命令
- JS中的深拷贝与浅拷贝
- Eth-Trunk捆绑技术
热门文章
- Django Ninja简单教程
- java list stream avg_使用jdk8的Stream来获取list集合的最小值、最大值、总和、平均数...
- zp2ss matlab,控制系统计算机仿真(matlab)实验三实验报告
- 关于惠普M277打印机手动双面打印和自动双面打印设置
- C#随手笔记——自动检测外部设备(U盘)的插拔
- php 图片 模糊,Word中插入图片模糊、不清晰的解决方法
- ME-27(USAF)
- python \x0d\x0a \x0a
- Unity一键将Text替换成TextMeshPro
- 命运冠位指定服务器选择,命运冠位指定从者选择指南