160CrackMe~001



dword ptr   表示占用两个字节的大小
ds:[esi+62c]   表示内存的地址  其中ds是段地址   [esi+62c]是偏移地址
edi   它就是寄存器了
所以   MOV DWORD PTR DS:[ESI+62C],EDI    就是将 edi 中的数据存储到内存中 地址为ds:[esi+62c]到 ds:[esi+62e]

在OD里,[local.1] 是 ebp-4 , [local.2] 是 ebp-8 , 以每4个字节递增,这[ebp-18]的18换算十进制为24.可在OD-调试设置-分析1中改。

byte ptr:以字节为单位word ptr:以字为单位

EAX:累加器EBP:基址指针EBX:基地址寄存器
 1 0042F9B5  |.  C705 50174300>mov dword ptr ds:[0x431750],0x29  ;此处将0x29赋值于地址0x431750
 2 0042F9BF  |.  8D55 F0       lea edx,[local.4]
 3 0042F9C2  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
 4 0042F9C8  |.  E8 8BB0FEFF   call dsdasdas.0041AA58
 5 0042F9CD  |.  8B45 F0       mov eax,[local.4]
 6 0042F9D0  |.  E8 DB40FDFF   call dsdasdas.00403AB0
 7 0042F9D5  |.  A3 6C174300   mov dword ptr ds:[0x43176C],eax
 8 0042F9DA  |.  8D55 F0       lea edx,[local.4]
 9 0042F9DD  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
10 0042F9E3  |.  E8 70B0FEFF   call dsdasdas.0041AA58
11 0042F9E8  |.  8B45 F0       mov eax,[local.4]
12 0042F9EB  |.  0FB600        movzx eax,byte ptr ds:[eax]
13 0042F9EE  |.  8BF0          mov esi,eax
14 0042F9F0  |.  C1E6 03       shl esi,0x3
15 0042F9F3  |.  2BF0          sub esi,eax
16 0042F9F5  |.  8D55 EC       lea edx,[local.5]
17 0042F9F8  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
18 0042F9FE  |.  E8 55B0FEFF   call dsdasdas.0041AA58
19 0042FA03  |.  8B45 EC       mov eax,[local.5]
20 0042FA06  |.  0FB640 01     movzx eax,byte ptr ds:[eax+0x1]
21 0042FA0A  |.  C1E0 04       shl eax,0x4
22 0042FA0D  |.  03F0          add esi,eax
23 0042FA0F  |.  8935 54174300 mov dword ptr ds:[0x431754],esi
24 0042FA15  |.  8D55 F0       lea edx,[local.4]
25 0042FA18  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
26 0042FA1E  |.  E8 35B0FEFF   call dsdasdas.0041AA58
27 0042FA23  |.  8B45 F0       mov eax,[local.4]
28 0042FA26  |.  0FB640 03     movzx eax,byte ptr ds:[eax+0x3]
29 0042FA2A  |.  6BF0 0B       imul esi,eax,0xB
30 0042FA2D  |.  8D55 EC       lea edx,[local.5]
31 0042FA30  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
32 0042FA36  |.  E8 1DB0FEFF   call dsdasdas.0041AA58
33 0042FA3B  |.  8B45 EC       mov eax,[local.5]
34 0042FA3E  |.  0FB640 02     movzx eax,byte ptr ds:[eax+0x2]
35 0042FA42  |.  6BC0 0E       imul eax,eax,0xE
36 0042FA45  |.  03F0          add esi,eax
37 0042FA47  |.  8935 58174300 mov dword ptr ds:[0x431758],esi
38 0042FA4D  |.  A1 6C174300   mov eax,dword ptr ds:[0x43176C]
39 0042FA52  |.  E8 D96EFDFF   call dsdasdas.00406930
40 0042FA57  |.  83F8 04       cmp eax,0x4                  ;字符小于4后面则跳转
41 0042FA5A  |.  7D 1D         jge short dsdasdas.0042FA79
42 0042FA5C  |.  6A 00         push 0x0
43 0042FA5E  |.  B9 74FB4200   mov ecx,dsdasdas.0042FB74                ;  ASCII 54,"ry Again!"
44 0042FA63  |.  BA 80FB4200   mov edx,dsdasdas.0042FB80                ;  ASCII 53,"orry , The serial is incorect !"
45 0042FA68  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
46 0042FA6D  |.  8B00          mov eax,dword ptr ds:[eax]               ;  dsdasdas.00424090
47 0042FA6F  |.  E8 FCA6FFFF   call dsdasdas.0042A170
48 0042FA74  |.  E9 BE000000   jmp dsdasdas.0042FB37
49 0042FA79  |>  8D55 F0       lea edx,[local.4]               ;local.4=EBP(基址指针)-16
50 0042FA7C  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]      
51 0042FA82  |.  E8 D1AFFEFF   call dsdasdas.0041AA58
52 0042FA87  |.  8B45 F0       mov eax,[local.4]
53 0042FA8A  |.  0FB600        movzx eax,byte ptr ds:[eax]         ;取eax地址中第一个字节赋值给eax
54 0042FA8D  |.  F72D 50174300 imul dword ptr ds:[0x431750]         ;*=0x29(0x431750的值)赋值eax
55 0042FA93  |.  A3 50174300   mov dword ptr ds:[0x431750],eax       ;将eax的值再次赋值给地址(0x431750)
56 0042FA98  |.  A1 50174300   mov eax,dword ptr ds:[0x431750]       ;将地址(0x431750)赋值给eax
57 0042FA9D  |.  0105 50174300 add dword ptr ds:[0x431750],eax       ;相当于eax*=2
58 0042FAA3  |.  8D45 FC       lea eax,[local.1]
59 0042FAA6  |.  BA ACFB4200   mov edx,dsdasdas.0042FBAC
60 0042FAAB  |.  E8 583CFDFF   call dsdasdas.00403708
61 0042FAB0  |.  8D45 F8       lea eax,[local.2]
62 0042FAB3  |.  BA B8FB4200   mov edx,dsdasdas.0042FBB8
63 0042FAB8  |.  E8 4B3CFDFF   call dsdasdas.00403708
64 0042FABD  |.  FF75 FC       push [local.1]                           ;  dsdasdas.0042FBAC
65 0042FAC0  |.  68 C8FB4200   push dsdasdas.0042FBC8                   ;  UNICODE "-"
66 0042FAC5  |.  8D55 E8       lea edx,[local.6]
67 0042FAC8  |.  A1 50174300   mov eax,dword ptr ds:[0x431750]
68 0042FACD  |.  E8 466CFDFF   call dsdasdas.00406718
69 0042FAD2  |.  FF75 E8       push [local.6]
70 0042FAD5  |.  68 C8FB4200   push dsdasdas.0042FBC8                   ;  UNICODE "-"
71 0042FADA  |.  FF75 F8       push [local.2]                           ;  dsdasdas.0042FBB8
72 0042FADD  |.  8D45 F4       lea eax,[local.3]
73 0042FAE0  |.  BA 05000000   mov edx,0x5
74 0042FAE5  |.  E8 C23EFDFF   call dsdasdas.004039AC
75 0042FAEA  |.  8D55 F0       lea edx,[local.4]
76 0042FAED  |.  8B83 E0010000 mov eax,dword ptr ds:[ebx+0x1E0]
77 0042FAF3  |.  E8 60AFFEFF   call dsdasdas.0041AA58
78 0042FAF8  |.  8B55 F0       mov edx,[local.4]
79 0042FAFB  |.  8B45 F4       mov eax,[local.3]
80 0042FAFE  |.  E8 F93EFDFF   call dsdasdas.004039FC
81 0042FB03  |.  75 1A         jnz short dsdasdas.0042FB1F
82 0042FB05  |.  6A 00         push 0x0
83 0042FB07  |.  B9 CCFB4200   mov ecx,dsdasdas.0042FBCC
84 0042FB0C  |.  BA D8FB4200   mov edx,dsdasdas.0042FBD8
85 0042FB11  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
86 0042FB16  |.  8B00          mov eax,dword ptr ds:[eax]               ;  dsdasdas.00424090
87 0042FB18  |.  E8 53A6FFFF   call dsdasdas.0042A170
88 0042FB1D  |.  EB 18         jmp short dsdasdas.0042FB37
89 0042FB1F  |>  6A 00         push 0x0
90 0042FB21  |.  B9 74FB4200   mov ecx,dsdasdas.0042FB74                ;  ASCII 54,"ry Again!"
91 0042FB26  |.  BA 80FB4200   mov edx,dsdasdas.0042FB80                ;  ASCII 53,"orry , The serial is incorect !"
92 0042FB2B  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
93 0042FB30  |.  8B00          mov eax,dword ptr ds:[eax]               ;  dsdasdas.00424090
94 0042FB32  |.  E8 39A6FFFF   call dsdasdas.0042A170
95 0042FB37  |>  33C0          xor eax,eax

这段大概意思是将name的第一个字节的ASCII值*=0x29再*=2,转化为10进制,再加上CW-%d-CRACKED,eg:CW-1234-CRACKED

注册机:

 1 #include<iostream>
 2 #include<stdlib.h>
 3 using namespace std;
 4 int main()
 5 {
 6     printf("Input name\r\n");
 7     int cName = getchar();
 8     cName *= 0x29;
 9     cName *= 2;
10     printf("CW-%d-CRACKED\n", cName);
11     system("pause");
12     return 0;
13 }

Nags与Serial直接搜索爆破即可

时间: 2024-10-22 12:35:46

160CrackMe~001的相关文章

PE 001~010

题意: 001(Multiples of 3 and 5):对小于1000的被3或5整除的数字求和. 002(Even Fibonacci numbers):斐波那契数列中小于等于4 000 000的偶数求和. 003(Largest prime factor):求600 851 475 143的最大质因数. 004(Largest palindrome product):求由两个三位数相乘得到的最大回文数. 005(Smallest multiple):求能被1~20中所有数整除的最小正整数.

【第四组】典型场景:查看导入的图片,工作序号:001,2017/7/6

场景 工作项序号001:查看导入的图片,最后修改时间:2017/7/6 1. 背景 1) 典型用户:罗小欧[主要].朱小叶[主要] 2) 用户的需求/迫切需要解决的问题 a. 罗小欧:出去玩拍了好多照片,想要在一个地方看到这些照片. b. 罗小欧:把照片放到了好几个文件夹,每次都要点开好几个文件夹,好麻烦. c. 朱小叶:我就想静静的欣赏下我们拍的照片. 3) 假设: a. 用户已经拍摄好照片 b. 用户指定的照片路径无误 2. 场景 罗小欧打开我们的TOUCH App,进入设置界面,添加他存放

JAVA程序设计心得001

JAVA程序设计心得001:java语言之所以能够跨平台,是因为java程序并不运行在操作系统中,而是运行在java虚拟机上.java虚拟机并不是硬件方面的东西,而是用于运行java程序的软件平台.JVM是分时操作系统的版本,例如运行在Windows中的jvm,当运行java程序时,虚拟机会吧该程序解析成window能够识别的代码,而java程序转移在linux系统中的JVM后,则就解析成Linux能够识别的代码.

(001)顺序栈的C++实现

(001)顺序栈的C++实现 2014/12/4     jxlijunhao 这里通过C++模板类来实现一个顺序栈: 1)初始化 2)入栈 3)出栈 4)取栈顶元素 在顺序栈中(一个数组中),操作的总是发生在数组的末尾 定义一个头文件 #ifndef SQ_STACK_H #define SQ_STACK_H #include<iostream> using namespace std; template<class T> class sq_stack { private: in

C++(笔)001.

1.编程范式 编程范式是指计算机编程的基本风格,C++可容纳多种程度范式,如面向对象编程.泛型编程及传统的过程式编程. 2.与C相比较 C++在C语言的基础上新加的特性如下: a.类和对象.继承 b.多态.虚函数和RTTI c.函数重载 d.引用变量 e.泛型编程 f.异常机制 g.命名空间 C++继承了C语言高效.简洁.快速和可移植性的传统,新增的面向对象编程特性,还有一个泛型编程的特性.在学习C++需要掌握C语言的基础知识,OOP思想和泛型编程的知识. 3.编程原理 计算机语言要处理两个概念

leetcoder系列001:c++字符串反转

问题: 给定一个输入字符串,字符串字反向词.例如 s = "the sky is blue",返回 "blue is sky the". 我的答案: class Solution { public: void reverseWords(string &s) { if(s.size() <= 0) return; string pattern = " "; string::size_type pos; vector<string

[C++11笔记001]修改通用库中的XDynamicArray,使它可以支持C++11的初始化列表和for循环

今天,有空翻了一下<C++Primer plus(第六版)>,看到里面有介绍新的for循环和初始化列表,但是我实现的动态数组XDynamicArray不支持这些新特性,没办法,只好进行改造了. 首先是for循环,如下面的样式 for(auto e:stList) { cout<<e<<endl; } 是于就各种google,和查找C++11的array的源代码,总结:就是提供一个标准的iterator和begin,end这两个方法,就可以了. 是于定义了一个iterat

Wpf吐槽第001次

很多初学者说.net性能不行.老鸟都知道这说法不确切,很多性能问题都是误用导致的,比如典型的没事就到处随地new临时对象,临时集合. 不过看过WPF的部分实现后才知道,WPF性能方面的设计和实现真的有问题! 本来也用不到wpf的,不过最近需要做些原型,需要功能简单性能还过得去的图形框架,就试了下wpf,紧接着就遇到各种难受的性能和设计问题.为了解决问题老老实实的查文档,实验,顺藤摸瓜用ILSpy看实现,才发现设计真的有问题,当年vista发布工期逼得太紧,明显设计没完工! 好吧,这就是个吐槽贴!

001. 3和5的倍数

Problem 1: Multiples of 3 and 5 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000. 意思就是让你算出在1000以下的3或者5的倍数之和. 我的pyt