xjun 发表于 2017-8-11 16:31

新手超简单找回自信CM01



来个简单的CM。新手找回自信专用.

PS:我编写程序的时候,几次忍不住笑:lol


zbnysjwsnd8 发表于 2017-8-11 18:10

本帖最后由 zbnysjwsnd8 于 2017-8-12 22:35 编辑

SeriousSnow 发表于 2017-8-11 18:03
看到这样的按钮事件,,我以为是HOOK API结果发现,,好像不是,,,那应该就是有地方修改内存,,然而没发 ...
有个密文 长度是0x12个字节
依次和0x88异或 得到注册码


00487AB2    B9 12000000   mov ecx,0x12
00487AB7    BA AC7B4800   mov edx,CM01.00487BAC
00487ABC    83F9 00         cmp ecx,0x0
00487ABF    74 07         je short CM01.00487AC8
00487AC1    8032 88         xor byte ptr ds:,0x88
00487AC4    42            inc edx                                  ; CM01.<ModuleEntryPoint>
00487AC5    49            dec ecx                                  ; CM01.<ModuleEntryPoint>
00487AC6^ EB F4         jmp short CM01.00487ABC

异或后:

出现的52pojie.cnBy:Xjun就是注册码
然后计算出的注册码和用户输入的注册码比较
如果不相等则直接返回
相等的话就把第二个提示的MessageBox("注册失败")中的"失败"改成"成功" 再更改一下MessageBox的图标(修改后是一个感叹号 原来是一个叉) 然后返回
00487AC8    68 AC7B4800   push CM01.00487BAC                     ; 计算出的注册码
00487ACD    50            push eax                                 ; 用户输入的注册码
00487ACE    E8 2E000000   call CM01.00487B01                     ; 文本比较 相等返回0
00487AD3    83F8 00         cmp eax,0x0
00487AD6    0F84 E5000000   je CM01.00487BC1

00487BC1    C705 5D9B4600 B>mov dword ptr ds:,0xA6B9C9B3   ; 失败 改成 成功
00487BCB    C605 4E114000 4>mov byte ptr ds:,0x40
00487BD2    83C4 08         add esp,0x8
00487BD5    90            nop
00487BD6    90            nop
00487BD7    90            nop
00487BD8    61            popad
00487BD9    8901            mov dword ptr ds:,eax
00487BDB    8B4C24 58       mov ecx,dword ptr ss:
00487BDF- E9 98BAF8FF   jmp CM01.0041367C


然后退出支持库以后 在按钮事件中取出注册码的前7个字节 和"52pojie"比较
004010AA|.C745 FC 00000>mov ,0x0
004010B1|.6A FF         push -0x1
004010B3|.6A 08         push 0x8
004010B5|.68 03000116   push 0x16010003                        ;编辑框1
004010BA|.68 01000152   push 0x52010001
004010BF|.E8 4E010000   call CM01.00401212                     ;jmp to <CM01.控件属性获取>(这里就被修改了 获取注册码)
004010C4|.83C4 10       add esp,0x10
004010C7|.8945 F8       mov ,eax
004010CA|.68 01030080   push 0x80000301
004010CF|.6A 00         push 0x0
004010D1|.68 07000000   push 0x7
004010D6|.68 04000080   push 0x80000004
004010DB|.6A 00         push 0x0
004010DD|.8B45 F8       mov eax,                        ;kernel32.BaseThreadInitThunk
004010E0|.85C0          test eax,eax
004010E2|.75 05         jnz short CM01.004010E9
004010E4|.B8 509B4600   mov eax,CM01.00469B50
004010E9|>50            push eax
004010EA|.68 02000000   push 0x2
004010EF|.BB 70124000   mov ebx,<CM01.取文本左边>
004010F4|.E8 13010000   call CM01.0040120C                     ;jmp to <CM01.调用核心支持库>
004010F9|.83C4 1C       add esp,0x1C
004010FC|.8945 F4       mov ,eax
004010FF|.8B5D F8       mov ebx,                        ;kernel32.BaseThreadInitThunk
00401102|.85DB          test ebx,ebx
00401104|.74 09         je short CM01.0040110F
00401106|.53            push ebx
00401107|.E8 FA000000   call CM01.00401206                     ;jmp to <CM01.释放变量空间>
0040110C|.83C4 04       add esp,0x4
0040110F|>8B45 F4       mov eax,
00401112|.50            push eax
00401113|.8B5D FC       mov ebx,
00401116|.85DB          test ebx,ebx
00401118|.74 09         je short CM01.00401123
0040111A|.53            push ebx
0040111B|.E8 E6000000   call CM01.00401206                     ;jmp to <CM01.释放变量空间>
00401120|.83C4 04       add esp,0x4
00401123|>58            pop eax                                  ;kernel32.75DA38F4
00401124|.8945 FC       mov ,eax
00401127|.68 519B4600   push CM01.00469B51                     ;52pojie
0040112C|.FF75 FC       push
0040112F|.E8 D0FEFFFF   call <CM01.比较文本>
00401134|.83C4 08       add esp,0x8
00401137|.83F8 00       cmp eax,0x0
0040113A|.0F85 35000000 jnz CM01.00401175


不相等提示失败(前面的比较注册码也不会通过)
00401175|> \6A 00         push 0x0
00401177|.6A 00         push 0x0
00401179|.6A 00         push 0x0
0040117B|.68 01030080   push 0x80000301
00401180|.6A 00         push 0x0
00401182|.68 10000000   push 0x10
00401187|.68 04000080   push 0x80000004
0040118C|.6A 00         push 0x0
0040118E|.68 599B4600   push CM01.00469B59                     ;注册失败!
00401193|.68 03000000   push 0x3
00401198|.BB 90134000   mov ebx,<CM01.系统核心支持库.未知命令>
0040119D|.E8 6A000000   call CM01.0040120C                     ;jmp to <CM01.调用核心支持库>
004011A2|.83C4 28       add esp,0x28
否则的话提示失败(用户输入的注册码的前七个字节是"52pojie" 但是剩下的部分不是".cnBy:Xjun")
00401140|.6A 00         push 0x0
00401142|.6A 00         push 0x0
00401144|.6A 00         push 0x0
00401146|.68 01030080   push 0x80000301
0040114B|.6A 00         push 0x0
0040114D|.68 10000000   push 0x10
00401152|.68 04000080   push 0x80000004
00401157|.6A 00         push 0x0
00401159|.68 599B4600   push CM01.00469B59                     ;注册失败!
0040115E|.68 03000000   push 0x3
00401163|.BB 90134000   mov ebx,<CM01.系统核心支持库.未知命令>
00401168|.E8 9F000000   call CM01.0040120C                     ;jmp to <CM01.调用核心支持库>
0040116D|.83C4 28       add esp,0x28
如果用户输入的注册码的前七个字节是"52pojie" 并且剩下的部分是".cnBy:Xjun" 那么在前面就会将"失败"改成"成功" MessageBox的图标也会被更改(修改后是一个感叹号 原来是一个叉)
00401140|.6A 00         push 0x0
00401142|.6A 00         push 0x0
00401144|.6A 00         push 0x0
00401146|.68 01030080   push 0x80000301
0040114B|.6A 00         push 0x0
0040114D|.68 40000000   push 0x40
00401152|.68 04000080   push 0x80000004
00401157|.6A 00         push 0x0
00401159|.68 599B4600   push CM01.00469B59                     ;注册成功!
0040115E|.68 03000000   push 0x3
00401163|.BB 90134000   mov ebx,<CM01.系统核心支持库.未知命令>
00401168|.E8 9F000000   call CM01.0040120C                     ;jmp to <CM01.调用核心支持库>
0040116D|.83C4 28       add esp,0x28

Je11y 发表于 2017-8-11 22:30

十分尴尬, 我断点断错位置了 报错后OD直接定位到了真码位置..........

2217936322 发表于 2017-8-11 16:39

小俊的CM怕是从打开到删除

zbnysjwsnd8 发表于 2017-8-11 16:46

本帖最后由 zbnysjwsnd8 于 2017-8-11 16:51 编辑

52pojie.cnBy:Xjun

zbnysjwsnd8 发表于 2017-8-11 16:50

本帖最后由 zbnysjwsnd8 于 2017-8-11 16:52 编辑

唔 可以 是修改支持库
注册码:52pojie.cnBy:Xjun

linlkz 发表于 2017-8-11 16:54

怎么知道成功与否呢?

PETiger 发表于 2017-8-11 18:00

你也开始发cm了

SeriousSnow 发表于 2017-8-11 18:03

看到这样的按钮事件,,我以为是HOOK API结果发现,,好像不是,,,那应该就是有地方修改内存,,然而没发现线程或者时钟,,,,无奈二进制搜索成功,还真搜到了,,,然后还是没啥头绪,就周围内存下访问断点,,看看有没有啥有用的,,然后就发现
上面那块内存会断下来,,看堆栈 编辑框1 还有我的假码都在,,,,,,,然后F9F9F9这就是注册码就一个一个出来了了,,,,我是真的服了,,完全不知道这个是怎么弄的,,稀里糊涂的的找到了注册码,,,,,求楼主告知

SeriousSnow 发表于 2017-8-11 18:31

zbnysjwsnd8 发表于 2017-8-11 18:10
有个密文 长度是0x12个字节
依次和0x88异或 得到注册码



我去,,,改了支持库,,,,厉害厉害,,,

bestyyb 发表于 2017-8-11 21:26

你这个就是标题党啊,没几个找回自信的到现在。
页: [1] 2
查看完整版本: 新手超简单找回自信CM01