首页
社区
课程
招聘
[旧帖] [求助]这篇文章里面的第一字节,和指令长度是什么 0.00雪花
发表于: 2008-7-2 18:00 4412

[旧帖] [求助]这篇文章里面的第一字节,和指令长度是什么 0.00雪花

2008-7-2 18:00
4412
用ollddbg 寻找注册码的教程

作者:夜袭来
QQ:20517896
email:loop_jspone@yahoo.com.cn

练习程序 ke_Crackme2.exe (由风飘雪提供)

1.先用 FI.EXE 侦测壳
2.用 UPXShell 脱壳
3.用olludbg.exe  打开已经脱壳的文件
4.点 F9 运行程序之后,右键点击 搜索--> 字符参考,

找到  00401345  |. 68 B8344000    PUSH Key-Crac.004034B8                   ; |Text = " Good

Job, I Wish You the Very Best"  ,双击来到主窗口:

向上找,找到关键跳转 :

00401309  |> 8B15 38304000  /MOV EDX,DWORD PTR DS:[403038]
0040130F  |. 8A90 37304000  |MOV DL,BYTE PTR DS:[EAX+403037]
00401315  |. 81E2 FF000000  |AND EDX,0FF
0040131B  |. 8BDA           |MOV EBX,EDX
0040131D  |. 0FAFDA         |IMUL EBX,EDX
00401320  |. 03F3           |ADD ESI,EBX
00401322  |. 8BDA           |MOV EBX,EDX
00401324  |. D1FB           |SAR EBX,1
00401326  |. 03F3           |ADD ESI,EBX
00401328  |. 2BF2           |SUB ESI,EDX
0040132A  |. 40             |INC EAX
0040132B  |. 49             |DEC ECX
0040132C  |.^75 DB          \JNZ SHORT Key-Crac.00401309
0040132E  |. 56             PUSH ESI
0040132F  |. 68 38314000    PUSH Key-Crac.00403138
00401334  |. E8 4A000000    CALL Key-Crac.00401383
00401339  |. 5E             POP ESI
0040133A  |. 3BC6           CMP EAX,ESI       ** 关键比较,可知真正数据必定在其中了,在此处

按 F2 下断点。
0040133C  |. 75 15          JNZ SHORT Key-Crac.00401353             ** 关键跳转
0040133E  |. 6A 00          PUSH 0                                   ; /Style =

MB_OK|MB_APPLMODAL
00401340  |. 68 62344000    PUSH Key-Crac.00403462                   ; |Title = "Key/CrackMe

#2   "
00401345  |. 68 B8344000    PUSH Key-Crac.004034B8                   ; |Text = " Good Job, I

Wish You the Very Best"
0040134A  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
0040134C  |. E8 9D000000    CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA

5.随便填写注册信息提交后,被中断于 0040133a ,此时 可以看到主窗口下面,显示了两条信息
ESI=00035BEB
EAX=0001E0F3

点右键 修改寄存 查看 ESI的16进制:00035BEB ,10进制有符号:220139 ,此为真正的注册码,同样查

看EAX ,里面就是刚才乱填写的假注册码。

6.得到注册码,第一个阶段完毕。

7.由上面的信息可写出注册机:
  打开 keymake.exe, 按F8,进行注册机设置,点浏览找到要破解程序Key-Crackme2.exe,添加中断信

息(位于0040133C  |. 75 15          JNZ SHORT Key-Crac.00401353 处):

中断地址:0040133A
中断次数:1
第一字节:3B
指令长度:2


右边选择:寄存器方式: ESI:十进制  生成注册机,与破解程序放在一个目录下即可。

8.本文完毕

这里的第一字节:3B  指令长度:2
是根据什么判断出来的?什么是第一字节,什么是指令长度?怎么确定?十进制里面包括ABCD这些英文字符码?
谢谢达人!!!!!!!!!!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
靠经验+知识 指令长度 学习下汇编就知道了
2008-7-2 21:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
0040133A  |. 3BC6           CMP EAX,ESI
第一字节嘛,当然就是3B,第二字节就是C6
这条指令不就是2个字节吗?指令长度就是2啊!

再举例
0040131D  |. 0FAFDA         |IMUL EBX,EDX
第一字节就是0F,第二字节就是AF,第三字节就是DA
这条指令长度就是3

如果什么是字节也不清楚,那么,去看下汇编书吧!
2008-7-2 21:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢,我只是业余爱好汇编,没有人教,天天看书看得头都大了,呵呵
2008-7-2 22:03
0
游客
登录 | 注册 方可回帖
返回
//