能力值:
( LV9,RANK:490 )
|
-
-
26 楼
好东西,学习+支持
|
能力值:
( LV9,RANK:3410 )
|
-
-
27 楼
laomms 最近写了不少教程
支持
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
我也模仿写了一个明码的,用本机系列号测试成功;但找别人测试注册却没成功.找不出原因,于是就用楼主写的用别人的系列号测试了下也不行,不知是什么原因?
这是TEST.EXE中我的系列号2254069508-58980863,那位帮忙计算一下注册码给我试试,多谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
一种新的思路。
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
;********************************************************************
; 如果在机器码处中断,则恢复原来的代码,并写入新的机器码
;********************************************************************
invoke WriteProcessMemory,pi.hProcess,eax,addr UserID,0ch,NULL ;读入22位机器码
;********************************************************************
; 如果在机器码处中断,则恢复原来的代码,并写入新的机器码
;********************************************************************
invoke WriteProcessMemory,pi.hProcess,eax,addr UserID,16h,NULL ;读入22位机器码
我是菜鸟一个,这里有不懂.这里的机器码应该是不一样的,一个22位一个12位的,
还有不懂的是明码中TEST我的系列号是2254069508-58980863不是22位的,不懂,请教?
|
能力值:
( LV13,RANK:1370 )
|
-
-
31 楼
最初由 由于 发布 ;******************************************************************** ; 如果在机器码处中断,则恢复原来的代码,并写入新的机器码 ;******************************************************************** invoke WriteProcessMemory,pi.hProcess,eax,addr UserID,0ch,NULL ;读入22位机器码 ........
0c是12位,注释写错了.
当然有更简单的方法:
invoke WriteProcessMemory,pi.hProcess,eax,addr UserID,sizeof UserID ,NULL
这样多长就无所谓了.
|
能力值:
( LV9,RANK:170 )
|
-
-
32 楼
真是精彩,呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
学着明码篇用文中的模板也写了一个明码的,就修改了几个地方.
一个是断点,把下面的2个断点改了
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BREAK_POINT1 equ 0046CDF6h ;第一个断点
BREAK_POINT2 equ 0046B747h ;第二个断点
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
二目标程序改名为TEST
并且把写入新的机器码的代码改为楼主提供的可以任意位数的代码
但测试注册别的机子一直不能成功,郁闷啊
偶是老菜
希望laomms看到指点一下,多谢!
|
能力值:
( LV13,RANK:1370 )
|
-
-
34 楼
最初由 由于 发布 学着明码篇用文中的模板也写了一个明码的,就修改了几个地方. 一个是断点,把下面的2个断点改了 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> BREAK_POINT1 equ 0046CDF6h ;第一个断点 BREAK_POINT2 equ 0046B747h ;第二个断点 ........
有几点要注意:
1、注意第一个断点你拦到的机器码存储的位置:
首先,需要理解CONTEXT结构,你可以查相关资料,基本上用CONTEXT_FULL就够了,除了CONTEXT_FLOATING_POINT和CONTEXT_DEBUG_REGISTER,假如有涉及浮点或调试寄存器的用另外两个。
我这里:
mov context.ContextFlags, CONTEXT_FULL ;先存储CONTEXT_FULL 标记
mov eax,context.regEax ;读出此刻寄存器EAX(regEax)的内容,其实EAX指向的就是老机器码的字符串,存储到EAX中
invoke WriteProcessMemory,pi.hProcess,eax,addr UserID,sizeof UserID,NULL ;将新机器码写入EAX
invoke SetThreadContext,pi.hThread, addr context ;设置生效,此时EAX变成了新的机器码并参与了算法流程
2、注意第二个断点你拦到的注册码存储的位置及存储格式:
invoke ReadProcessMemory,pi.hProcess,context.regEcx,addr value,sizeof value,NULL;注册码在ECX中,读出并放到value中,此时要注意读出的注册码格式,应软件要求进行转换。10进制?16进制?还是需要再做计算等...
如果目标软件有加壳,可以参考我的另一篇文章.
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
思路不错,学习!~
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
最初由 laomms 发布 有几点要注意: 1、注意第一个断点你拦到的机器码存储的位置: 首先,需要理解CONTEXT结构,你可以查相关资料,基本上用CONTEXT_FULL就够了,除了CONTEXT_FLOATING_POINT和CONTEXT_DEBUG_REGISTER,假如有涉及浮点或调试寄存器的用另外两个。 我这里: mov context.ContextFlags, CONTEXT_FULL ;先存储CONTEXT_FULL 标记 ........ 谢谢,再试!
|
能力值:
(RANK:10 )
|
-
-
37 楼
不懂`````
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
好文,学习!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
I服了U!强人一个!
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
这么强的贴!把脑壳搞大点先!!
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
?算清楚杂多 佩服
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
正在学基础知识! N长时间后 再向你请教! 支持!
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
|
能力值:
( LV4,RANK:50 )
|
-
-
44 楼
请问这里的机器码直观的讲是不是算注册码时需要用到的用户名呢?
我遇到一个程序,他的用户名是这样读取的:
004012F6 68 38304000 PUSH Crackme2.00403038 ; username
请问如何设置机器码呢?
|
能力值:
( LV4,RANK:50 )
|
-
-
45 楼
果然太强了,这种方法你也想得出来,真是太牛了!
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
明码比较有点简单
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
进来学习下,谢谢分享了
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
好帖,感谢分享。
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
的确是牛人,佩服!!!
|
能力值:
( LV6,RANK:90 )
|
-
-
50 楼
写的不错,太强了,支持一下
|
|
|