首页
社区
课程
招聘
[原创]菜鸟死追注册码(详细版,求精华,补上算法)
发表于: 2006-6-12 22:49 17692

[原创]菜鸟死追注册码(详细版,求精华,补上算法)

2006-6-12 22:49
17692
收藏
免费 7
支持
分享
最新回复 (46)
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
26
在00613503 RETN这句执行后就到达啦oep,
不知道你用什么平台,我的直接可以运行,你也可以试下用aspackide 1.41
好象是这个工具,应该没有问题的.
2006-6-15 10:13
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
很感谢楼主这么快就回复.这里直接跳到了004015cc,用OD脱壳后不能用,重建输入表选1或选2都不行,我的是XPSP2系统,用你说的那个工具也不行.不知你是在哪个系统下运行的.
2006-6-15 11:25
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
28
我把我脱的上传啦,看在你那里可以运行不?我的是xp1
你那里如果不能运行,你可以跟踪脱壳和没有脱壳的,看是哪一步出啦问题,比较一下,有可能可以修复.
上传的附件:
2006-6-15 13:17
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
谢了,可以运行的,但我还是不知道什么地方出的问题,oep应该是对的,不知你这个是用什么工具脱的,脱了后要修复不??再一次感谢楼主了.我先踪一下算法吧.但我还是想真的想把这个问题搞清楚,多帮帮忙了.
2006-6-15 14:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
向这种刻苦的搂住学习
2006-6-15 14:12
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
壳脱了,但是是用Ctrl+G 输入004015cc直接跳到入口,用OD的插件脱壳后就能用,跳到这里的代码为:
004015CC     BA ECABF328   mov edx,28F3ABEC
004015D1     8B27          mov esp,dword ptr ds:[edi]
004015D3     2886 28184F8E sub byte ptr ds:[esi+8E4F1828],al
004015D9     0D E05C4EA8   or eax,A84E5CE0
004015DE   ^ 77 B0         ja short Pic2Ico.00401590
004015E0     B2 3B         mov dl,3B
004015E2   ^ E2 FD         loopd short Pic2Ico.004015E1
004015E4     23D0          and edx,eax
004015E6     3960 18       cmp dword ptr ds:[eax+18],esp
004015E9     626C52 2F     bound ebp,qword ptr ds:[edx+edx*2+>
004015ED     41            inc ecx
004015EE     ED            in eax,dx
004015EF     DAF7          fidiv edi                          ; 非法使用寄存器
004015F1   ^ 7D DA         jge short Pic2Ico.004015CD
004015F3     A2 6394DD6D   mov byte ptr ds:[6DDD9463],al
004015F8     1071 79       adc byte ptr ds:[ecx+79],dh
004015FB   ^ 78 84         js short Pic2Ico.00401581
004015FD     0941 0A       or dword ptr ds:[ecx+A],eax
00401600     8F            ???                                ; 未知命令
00401601     97            xchg eax,edi
00401602     82E1 FE       and cl,FFFFFFFE
00401605     CA 9615       retf 1596
00401608     3F            aas
00401609     A0 9F505E8E   mov al,byte ptr ds:[8E5E509F]
0040160E     7F 32         jg short Pic2Ico.00401642
00401610     65:B9 442DCBD>mov ecx,DACB2D44
00401616     57            push edi
00401617     55            push ebp

但如果从00613503跳过来之后代码就变为:
004015CC    /EB 10         jmp short Pic2Ico.004015DE
004015CE    |66:623A       bound di,dword ptr ds:[edx]
004015D1    |43            inc ebx
004015D2    |2B2B          sub ebp,dword ptr ds:[ebx]
004015D4    |48            dec eax
004015D5    |4F            dec edi
004015D6    |4F            dec edi
004015D7    |4B            dec ebx
004015D8    |90            nop
004015D9   -|E9 98E05000   jmp 0090F676
004015DE    \A1 8BE05000   mov eax,dword ptr ds:[50E08B]
004015E3     C1E0 02       shl eax,2
004015E6     A3 8FE05000   mov dword ptr ds:[50E08F],eax
004015EB     52            push edx
004015EC     6A 00         push 0
004015EE     E8 1BB71000   call Pic2Ico.0050CD0E              ; jmp to kernel32.GetModuleHandleA
004015F3     8BD0          mov edx,eax
004015F5     E8 52690E00   call Pic2Ico.004E7F4C
004015FA     5A            pop edx
004015FB     E8 B0680E00   call Pic2Ico.004E7EB0
00401600     E8 87690E00   call Pic2Ico.004E7F8C
00401605     6A 00         push 0
00401607     E8 147E0E00   call Pic2Ico.004E9420
0040160C     59            pop ecx
0040160D     68 34E05000   push Pic2Ico.0050E034
00401612     6A 00         push 0
00401614     E8 F5B61000   call Pic2Ico.0050CD0E              ; jmp to kernel32.GetModuleHandleA
同样在004015cc处脱壳就不能用.我不知道什么原因,不知各位朋友在练习的时候遇到这个问题没有,或者有谁能看出是什么问题的请指点一下,好吗?
2006-6-15 17:02
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
32
写的很详细,值得学习,谢谢
2006-6-15 17:29
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
33
最初由 dongfeng 发布
壳脱了,但是是用Ctrl+G 输入004015cc直接跳到入口,用OD的插件脱壳后就能用,跳到这里的代码为:
004015CC BA ECABF328 mov edx,28F3ABEC
004015D1 8B27 mov esp,dword ptr ds:[edi]
004015D3 2886 28184F8E sub byte ptr ds:[esi+8E4F1828],al
004015D9 0D E05C4EA8 or eax,A84E5CE0
........

要在壳解压缩后dump才能脱,你直接到004015cc,壳并没有解压,相当与你抓的一部分是壳,一部分是压缩的程序代码,所以不能用.这是我理解的,不知道对不.
2006-6-15 17:51
0
雪    币: 236
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
我用Aspackdie1.41自动脱壳了.但,用OD打开并查找"your registration code is invalid"时,找不到!

闷啊.
2006-6-16 12:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
楼主的努力大家是看得到的,加油!
2006-6-16 12:53
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
最初由 sbright 发布
要在壳解压缩后dump才能脱,你直接到004015cc,壳并没有解压,相当与你抓的一部分是壳,一部分是压缩的程序代码,所以不能用.这是我理解的,不知道对不.

可能是没看懂我的问题,我现在是直接跳到出口,脱壳就能用.而解压后反而不能用,郁闷啊.

我看了一下算法:
0042126C  |.  52            |PUSH EDX                                             
0042126D  |.  E8 26010000   |CALL bbb2.00421398             这个call将EDX给EAX;      ; \bbb2.00421398
  00421272  |.  59            |POP ECX
  00421273  |.  B9 1A000000   |MOV ECX,1A
  00421278  |.  99            |CDQ
  00421279  |.  F7F9          |IDIV ECX
  0042127B  |.  83C2 41       |ADD EDX,41                   这一段象个伪随机数的反汇编,因为我在rjjj的crackme里面看到过这个。
这里我并不认为是什么伪随机数,因为0042127B这句的EDX是上一个EDX(也就是0042126C这句的EDX)除以1A的余数.我其实也很菜,也不知道是怎么算出来的,但我每次检验都是对的.
2006-6-16 14:36
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
37
脱壳就能用.而解压后反而不能用????
脱壳的过程就是让代码在内存中解压吧解压后再把代码dump出来.
不知道你所说的解压是什么意思?
确实不是随机数的反汇编,
这是riijj大哥的简单crackme
http://bbs.pediy.com/upload/files/1084801702.zip
这是代码
int checkkey()
{
  char buf1[16];
  char buf2[16];
  char space[16];
  unsigned long i, deta = 0;
  char x;
  long j = 0;

  if(GetDlgItemText(hDialog, IDC_EDIT1, buf1, 16) < 3)
  {
    return 1;
  }
  
  GetDlgItemText(hDialog, IDC_EDIT2, buf2, 16);

  srand(UINT_MAX / (1+(buf1[0] % buf1[1] * buf1[2])));

  for(i=0;i<15;i++)
  {
    space[i] = 65 + (int)(rand() % 26);
  }

  for(i=0;i<strlen(buf1);i++)
  {
    x = buf1[i];
    x = x >> 5;

    for(j=0; j<x*123; j++)
      rand();

    space[i] = 65 + (int)(rand() % 26);
    deta = deta + abs(space[i] - buf2[i]);
  }
那句相当与space[i] = 65 + (int)(XXX % 26);这句
除法一般是EAX放被除数余数放edx,
sorry
2006-6-16 16:13
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
我所说的也就是让代码在内存中解压,也就是我们说的单步跟踪.谢谢你给出代码.
就我所看到的汇编教程中并不是把把被除数放在EAX中,而是把被除数的高位放在EAX中,被除数的低位放在EDX中,作除后,商又放在EAX中,余数放在EDX中.所以我就没搞明白这里是怎么算出来的.
2006-6-17 09:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
谢谢楼主,菜鸟喜欢看的文章,有你的指点我们会进步快一些
2006-6-17 10:15
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
40
最初由 dongfeng 发布
我所说的也就是让代码在内存中解压,也就是我们说的单步跟踪.谢谢你给出代码.
就我所看到的汇编教程中并不是把把被除数放在EAX中,而是把被除数的高位放在EAX中,被除数的低位放在EDX中,作除后,商又放在EAX中,余数放在EDX中.所以我就没搞明白这里是怎么算出来的.


这里没有这样做,eax有32位,一般来说比较大啦,不知道long int 和short int 是多少位.也有可能是64位的数,所以用EAX和edx,你可以用高级语言试下
定义个四字的变量和双字的变量已及字变量做除法,然后反汇编试下?不懂..
不过这个暂时我也不会也不去弄懂它,有需要的时候再尝试去探索... 不懂的东西太多啦,只学自己感兴趣的..
2006-6-17 12:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
看过 学习中 对汇编的学习应该加强
2006-6-17 16:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
很精彩,呵呵。
2006-6-17 18:51
0
雪    币: 454
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
呵呵,不错耶,照着看容易学.
2006-6-17 22:29
0
雪    币: 218
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
支持一下
很详细,适合菜鸟看,学习中!
2006-6-19 12:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
写出注册机就完美了
已经很厉害了
2006-6-19 16:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
最初由 sbright 发布
【文章标题】: 菜鸟死追注册码(详细版,求精华)
【文章作者】: sbright
【作者邮箱】: 516824959
【作者主页】: www.qq.com
【作者QQ号】: 516824959
........
   看不懂啊
2006-6-19 17:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
我是菜鸟,看了有些启发,学到了点东西。
谢谢楼主的文章。
2006-6-22 12:31
0
游客
登录 | 注册 方可回帖
返回
//