001-注册算法分析

一、工具和调试环境

  • 动态调试工具:x64dbg
  • 系统环境:win10 1909

二、分析Serial/name的算法

由于Serial里面就是一个字符串比较,没有啥算法,这里就不详细说了,大概就是通过搜索字符串Failed,就能定位到关键位置,Serial直接可以在栈中观察到,为:Hello Dude!。所以我们主要分析Serial/name的注册算法。

直接使用提示字符串验证,得到错误提示如下

那么我们直接搜索字符串Sorry,得知有两个地方使用该字符串,都设置上断点,然后重新验证,成功断在0x0042F826处,先分析这个,另一个后面再说

断下之后向上定位到关键算法如下

0042FA87     | 8B45 F0    		| mov eax,dword ptr ss:[ebp-10]      | [ebp-10]:"Please enter your name !" ; 获取name首地址
0042FA8A | 0FB600 | movzx eax,byte ptr ds:[eax] | ; eax = name[0] 取出name的第一个字符存放在eax中
0042FA8D | F72D 50174300 | imul dword ptr ds:[431750] | 00431750:L")" ; ")" aiscii码为 0x29 eax = name[0] * 0x29
0042FA93 | A3 50174300 | mov dword ptr ds:[431750],eax | ; key = name[0] * 0x29
0042FA98 | A1 50174300 | mov eax,dword ptr ds:[431750] | ;
0042FA9D | 0105 50174300 | add dword ptr ds:[431750],eax | ; key = name[0] * 0x29 * 2

通过算法key = name[0] * 0x29 * 2算出key后,紧接着拼接得到Serial,格式为:CW-key-CRACKED

三、算法核心代码模拟

char* GetSerial(char* szName)
{
static char szSerial[60] = {};
if (strlen(szName) < 4)
{
MessageBox(NULL, "Name至少需要4位", "温馨提示", MB_OK);
return nullptr;
} int key = szName[0] * 0x29 * 2; sprintf(szSerial, "CW-%d-CRACKED", key);
return szSerial;
}

最新文章

  1. IEnumerable、GetEnumerator、IEnumerator的理解
  2. DataAdapter与DataSet的使用
  3. rqnoj71 拔河比赛
  4. hlg 2130 状压dp
  5. 优化studio的速度
  6. 【转载/修改】ScrollLayout代码修正,追加模仿viewpager滚动速度
  7. Salt自动化之自动更新Gitfs-爱折腾技术网
  8. Ubuntu15.10 编译VLC Android(安卓)过程记录
  9. 拖数据库到x-code常见错误
  10. 欢迎CSDN-markdown编辑
  11. 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)
  12. bootstrap-paginator分页插件的两种使用方式
  13. Python基础:条件判断与循环的两个要点
  14. Windows下的Nessus安装与启动
  15. redis 中的key值过期后,触发通知事件
  16. JS之汉字与Unicode码的相互转化
  17. 天府大讲堂:5G时代的物联网发展趋势与产业变革
  18. 如何把JS对象转成数组
  19. macos 下通过sublime text 3 + gosublime+sublimegdb 开发注意事项
  20. ubuntu 下安装和启动SSH 服务

热门文章

  1. 2022极端高温!机器学习如何预测森林火灾?⛵ 万物AI
  2. SCI简介和写作顺序
  3. AdsStream的使用
  4. Go语言核心36讲47
  5. 数电第五周周结_by_yc
  6. 漫谈计算机网络:应用层 ----- 从DNS域名解析到WWW万维网再到P2P应用
  7. 整理 js 日期对象的详细功能,使用 js 日期对象获取具体日期、昨天、今天、明天、每月天数、时间戳等,以及常用的日期时间处理方法
  8. 《MySQL必知必会》知识汇总二
  9. Vue快速上门(3)-组件与复用
  10. django.db.migrations.exceptions.NodeNotFoundError: Migration apitest.0001_initial dependencies reference nonexistent parent node (&#39;product&#39;, &#39;0001_initial&#39;)