幽雅的心 发表于 2010-8-5 09:34:09

一些破解用到的小技巧

1.当注册窗口挡住OD时,可以AIT+F5,是OD总在最前。

2.去delphi对话框的另一种方法

ResScope打开delphi的RC数据删除以下东西,可以去除对话框

onclose = formclose
oncreate =formcreate
ondestory =formdestory

3.标志位破解

call XXX
test eax,eax
je XXX

此时eax为标志位,在那个call里直接给eax赋值即可。。

mov eax,1
retn

4.当程序被封装到一个dll里时,由一个外壳程序来调用时(发现进程里有一个exe和一个dll。)

可以下
bp ResumeThread
或者
bp SuspendTread

5.对于灰色按钮,或者不可见按钮.

用SPY工具试试,对于灰色按钮,或者不可见按钮效果很好。

6.万能断点

API插件里有


7.网络验证

用F12法NOP掉登入框,然后查找网络验证Call,NOP掉,后面的跳转也nop掉,然后引导程序走向验证成功处。F12调用,在断尾或者段首下断。


8.注册表断不下来时

断启动框,明明知道注册信息保存在注册表里,下注册表断点却不到键值,此时可以到试用框弹出的前一次注册表断点那停下,F8一步一步的找到启动框的弹出位置,再去分析。

9.自校验

校验一般类型:多为比较文件大小,可将程序用十六进制编辑工具未脱壳得原程序加大体积会不会不能运行,或者将脱壳了的程序重新加个壳看能不能运行。还有比较程序名字的也常见(不过这个没有强度可以忽略)。
去校验一般方法:下好相应的断点,然后开两个od比较调试。

vb程序
1、下rtcFileLen、rtcFileLength断点
2、P-code编译的vb程序用WKTVBDE调试

Delphi程序
下SetFilePointer、GetFileSize断点

还有常用的
下CreateFileA断点,开两个od比较
下退出进程ExitProcess断点 ,回溯找到关键

10.最佳修改的地方

能改内存地址赋值的,要先改赋值。

mov ss:,0---------------此处是最佳修改的地方
......
.......

mov byte al.ss:------此处凑合

pop...

retn


test al,al

je xxxxxx-----------------此处最差

11.BC++找不到字符串时

ALt+M,在idata段下断点,F9,断下来之后就可以查找字符串了。

12.vb程序找不到关键字符串

可以用GetVBres修改成数字,再查找

13.VB追注册码时

可用_vbaStrCmp和_vbaStrComp.注意堆栈,就能找到注册码。

按OD上的E,找到Msvbvm6.0,双击进入,右击--搜索--当前模块中的名称

14.VB输入框软件(输入注册码)类型的破解


bp rtcInputBox //输入框


15.易语言破解-正常灰色不可视三种命令

原:05
不可视:06/04
灰:07


前提:知道按钮的名称为:直接查找"按钮"

16.网络验证

可以截取数据然后封包。用封包助手-->截取的Recv,然后修改HOST文件,指向本地。
用E语言写个简单的服务端,把16进制的封包返回即可。用的一个-->外挂海万能模块1.70贺岁版.ec

17.F12堆栈调用

004C0A1C   55               push ebp //登陆按钮代码启始
004C0A1D   8BEC               mov ebp,esp
004C0A1F   B9 07000000      mov ecx,7

OD载入
直接运行点登陆
F12暂停
Alt+K
调用堆栈

调用堆栈
地址       堆栈       函数例程 / 参数                                          调用来自                      框架
0012FB4C   77D13C53   包含 7FFE0304                                              USER32.77D13C51               0012FB7C
0012FB50   0047AFB1   <jmp.&USER32.WaitMessage>                              复件_PAu.0047AFAC               0012FB7C
0012FB80   0047A5F8   ? 复件_PAu.0047AEBC                                        复件_PAu.0047A5F3               0012FB7C
0012FBA4   004773EA   复件_PAu.0047A5DC                                          复件_PAu.004773E5               0012FC00

双击004773E5来到代码处下断开始跟!

004773F6    /74 0F               je short 复件_PAu.00477407 //似乎是关键跳(1),不要他跳
004773F8    |8B45 FC             mov eax,dword ptr ss:
004773FB    |C780 4C020000 02000>mov dword ptr ds:,2
00477405    |EB 14               jmp short 复件_PAu.0047741B
00477407    \8B45 FC             mov eax,dword ptr ss:
0047740A   83B8 4C020000 00    cmp dword ptr ds:,0
00477411   74 08               je short 复件_PAu.0047741B
00477413   8B45 FC             mov eax,dword ptr ss:
00477416   E8 1DFDFFFF         call 复件_PAu.00477138
0047741B   8B45 FC             mov eax,dword ptr ss:
0047741E   8B80 4C020000       mov eax,dword ptr ds:
00477424   85C0                test eax,eax
00477426   ^ 74 B8               je short 复件_PAu.004773E0 //原先是跳的,当改了关键跳(1)之后就不跳了,直接来到退出代码


004CF4DB   803D A4CE4D00 00    cmp byte ptr ds:,0
004CF4E2   75 0F               jnz short 复件_PAu.004CF4F3   //关键关键跳!让他跳过!
004CF4E4   A1 98474D00         mov eax,dword ptr ds:
004CF4E9   8B00                mov eax,dword ptr ds:
004CF4EB   8B10                mov edx,dword ptr ds:
004CF4ED   FF92 EC000000       call dword ptr ds:   //调用登陆验证框
004CF4F3   A1 204B4D00         mov eax,dword ptr ds:
004CF4F8   8B00                mov eax,dword ptr ds:
004CF4FA   8B10                mov edx,dword ptr ds:
004CF4FC   FF92 EC000000       call dword ptr ds:   //登陆验证框的退出代码
004CF502   48                  dec eax
004CF503   0F85 D6010000       jnz 复件_PAu.004CF6DF
004CF509   833D FCCE4D00 00    cmp dword ptr ds:,0

如果直接修改关键跳(1)的话,进去之后,由返回来到退出代码!

所以直接破调用登陆框代码!

18.附加数据的处理

可以用PEID里得插件,overlay1.0

19.躲避ASProtect内存校验

用最后一次异常,在00401000下断即可到达OEP之后,在包含中显示data段(00401000下面的那个段)下内存写入,看到

00D308B8    A3 F8C05000   mov   dword ptr , eax          ; AFR.00400000
00D308BD    E9 8D010000   jmp   00D30A4F
00D308C2    F3:             prefix rep:
00D308C3    EB 02         jmp   short 00D308C7


eax=00400000 (AFR.00400000), ASCII "MZP"
ds:=00000000


在内存检查选项:

内存地址:50C0F8
内存数值:00400000
即可

20.手动查找IAT

自己找一个call,然后enter进去。手动找iat,找到几个的话。就右键-- 在数据窗口跟随-内存地址
或者ctrl+b ff15 (C类程序) ff25(delphi)

nbrspx 发表于 2010-8-5 21:26:49

好东西,学习一下!

yanhuohua999 发表于 2010-8-6 07:59:21

总结的确实不错,。。很多都是自己用到的呵呵

fywy 发表于 2010-8-6 08:56:26

学习一下!!很实用~~

532098613 发表于 2010-8-10 08:24:10

看完了支持一下!~

chen平湖秋月 发表于 2010-8-10 15:19:14

学习啊,,写的好有深度

12394613643 发表于 2010-8-11 20:50:51

太丰富了,谢谢分享。

cjteam 发表于 2010-8-11 22:44:02

这个总结的很好,不过我一般用不上,呵呵

yimaowg 发表于 2011-8-10 01:04:30

看看。内容不错。

云海 发表于 2011-8-10 02:50:26

谢谢学习学习
页: [1] 2 3 4
查看完整版本: 一些破解用到的小技巧