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相关推荐

  1. 160 - 8 Andrnalin.1

    环境: Windows xp sp3 打开,就一个Key输入框,输入:goodname,点OK,弹出一个 不明文字的框,反正肯定不对. 查壳,无壳的vb程序.OD载入: 查找字串,翻到最下面: 004 ...

  2. 160 - 11 Andrnalin.4

    环境: Windows xp sp3 打开,这次的界面炫酷多了,就像输保险箱密码. 旁边一个"UNREGISTRIERT"表示还没注册 输入个666666,没反应又没有确认按钮,可 ...

  3. 160 - 10 Andrénalin.3

    环境: Windows xp sp3 打开,是只有一个key,输入个goodname试试,错误...记下错误信息 查壳,无壳的VB程序. 查找字符串: 00402036 UNICODE "k ...

  4. 160 - 9 Andrnalin.2

    环境: Windows xp sp3 打开,这次升级了,有个Name和一个Key,输入: Name:goodname Key:12345678 肯定错误.拿到错误信息的字符串 查壳,无壳的VB程序. ...

  5. 004/160 CrackMe ajj CKme

    分析 可以通过搜索字符串的方式找到 "恭喜恭喜!注册成功" 的提示 在关键跳转上面打断点,输入一组假的 Name Serial 测试 发现点击图片框时程序会停在断点,说明图片框和按 ...

  6. 002/160 CrackMe Afkayas #1

    Crack 依旧可以搜索字符串找到提示的错误信息 之后在上面下断点,单步往下走就可以在寄存器中看到正确的序列号了 KeyGen 直接扔进 IDA 中效果不理想,所以只能分析汇编了 在判断的上面打上断点 ...

  7. win10桌面图标有小白标_白标移动应用程序,带有react native和babel

    win10桌面图标有小白标 In my previous article, I described a solution for white labelling web applications wh ...

  8. 逆向破解之160个CrackMe —— 008-009

    CrackMe -- 008 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  9. 逆向破解之160个CrackMe —— 007

    CrackMe -- 007 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

最新文章

  1. 在微服务架构下基于 Prometheus 构建一体化监控平台的最佳实践
  2. Twitter在超分辨率技术上取得新进展,能还原打码图片
  3. KNN算法的简单实现
  4. php php5,初探 PHP5 (一)_PHP
  5. OD(Ollydbg)简介
  6. react接收后端文件_React如何从后端获取数据并渲染到前端?
  7. 业界分享 | 美团搜索排序实践
  8. bzoj 3517: 翻硬币
  9. 微软为啥让免费升Win10?
  10. 3D打印社团的建立和一年的经营
  11. tgp助手登陆服务器未响应,LOL登陆服务器未响应解决方法
  12. CSDN是如何让我副业月入过万的?
  13. Stata:实时估计个股贝塔(beta)系数
  14. 戴尔r720服务器装爱快路由系统,笔记本虚拟机里安装爱快软路由做单臂路由
  15. X86_64 GNU汇编、寄存器、内嵌汇编
  16. 小学生html教程,小学.html
  17. 区块链、NFT 与元宇宙中的稀缺性技术
  18. ubuntu安装和卸载软件命令
  19. JS中的深拷贝与浅拷贝
  20. Eth-Trunk捆绑技术

热门文章

  1. Django Ninja简单教程
  2. java list stream avg_使用jdk8的Stream来获取list集合的最小值、最大值、总和、平均数...
  3. zp2ss matlab,控制系统计算机仿真(matlab)实验三实验报告
  4. 关于惠普M277打印机手动双面打印和自动双面打印设置
  5. C#随手笔记——自动检测外部设备(U盘)的插拔
  6. php 图片 模糊,Word中插入图片模糊、不清晰的解决方法
  7. ME-27(USAF)
  8. python \x0d\x0a \x0a
  9. Unity一键将Text替换成TextMeshPro
  10. 命运冠位指定服务器选择,命运冠位指定从者选择指南