能力值:
( LV12,RANK:980 )
|
-
-
2 楼
坐沙发
|
能力值:
(RANK:10 )
|
-
-
3 楼
坐板凳...
|
能力值:
( LV9,RANK:210 )
|
-
-
4 楼
学习,如果被偷了OEP,该如何找oep?55 8B EC 应该没有了吧,请指教!
|
能力值:
( LV13,RANK:410 )
|
-
-
5 楼
oep用同类编译器编译的程序来参照。猜出OEP.
|
能力值:
( LV13,RANK:1370 )
|
-
-
6 楼
最初由 cxlrb 发布 学习,如果被偷了OEP,该如何找oep?55 8B EC 应该没有了吧,请指教!
delphi的程序都有个初始化例程(函数).
delphi入口:
push ebp
mov ebp,esp
sub esp,imm32
mov eax,imm32
call xxxxxxxx //这个就是初始化例程
而这个初始化函数call xxxxxxxx里面都是这样的:
push ebx
mov ebx,eax
XOR EAX,EAX
MOV [imm32],EAX
call GetModuleHandleA //关键是这个
我们只要下He GetModuleHandleA断点,利用堆栈找回OEP地址.
|
能力值:
( LV9,RANK:1250 )
|
-
-
7 楼
收藏后学习。
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
学习了!!
|
能力值:
( LV6,RANK:90 )
|
-
-
9 楼
支持
|
能力值:
( LV9,RANK:210 )
|
-
-
10 楼
最初由 laomms 发布 delphi的程序都有个初始化例程(函数).
delphi入口: push ebp mov ebp,esp sub esp,imm32 mov eax,imm32 call xxxxxxxx //这个就是初始化例程
再次请教老兄, 第一个imm32有时是-10,有时是-C,能否通用?
第二个imm32看了一下是一个存放ascii字符的地址,有时是v,有时是=,又有什么不同,自己找个地址放一个v补上去行不行?
|
能力值:
( LV13,RANK:410 )
|
-
-
11 楼
第二个imm32是dephi的初始化类表
类表第一项是纪录此表的长度
|
能力值:
( LV6,RANK:90 )
|
-
-
12 楼
学习中,支持一下~!~
|
能力值:
( LV6,RANK:90 )
|
-
-
13 楼
最初由 laomms 发布 CTRL+N打开导入表,右击GetProcAddress,在导入表中跟随,双击: 0055F0C2 FF15 BC804D00 CALL NEAR DWORD PTR DS:[<&kernel32.GetPr>; 来到这里,下硬件执行断点 0055F0C8 09C0 OR EAX,EAX 0055F0CA 0F84 0D000000 JE keygen.0055F0DD 0055F0D0 8907 MOV DWORD PTR DS:[EDI],EAX 0055F0D2 8345 F4 04 ADD DWORD PTR SS:[EBP-C],4 0055F0D6 ^ E9 A6FFFFFF JMP keygen.0055F081 0055F0DB 0000 ADD BYTE PTR DS:[EAX],AL 0055F0DD 53 PUSH EBX 0055F0DE 89D8 MOV EAX,EBX 0055F0E0 E8 09000000 CALL keygen.0055F0EE 0055F0E5 5B POP EBX 0055F0E6 5F POP EDI 0055F0E7 5E POP ESI 0055F0E8 8BE5 MOV ESP,EBP 0055F0EA 5D POP EBP 0055F0EB C3 RETN CTRL+F2重新载入原程序,ALT+B打开断点查看窗口,删除断点后F9,断在硬件执行断点处,取消硬件执行断点,F4到0055F0E5: 0055F0C2 FF15 BC804D00 CALL NEAR DWORD PTR DS:[<&kernel32.GetPr>; 来到这里,下硬件执行断点
我在这里下了硬件断点,却断不下来,也不知道为什么,请楼主指教
|
能力值:
( LV13,RANK:410 )
|
-
-
14 楼
断GetProcAddressA
|
能力值:
( LV6,RANK:90 )
|
-
-
15 楼
也断不下来,我的这里CTRL+N打开导入表,右击GetProcAddress,在导入表中跟随,双击:出现的代码不是以CALL的形式出现的,面是054520BC > 28AC80 7CA2CA81 SUB BYTE PTR DS:[EAX+EAX*4+81CAA27C],CH
这种形式,两个函数都是这样,晕了
|
能力值:
( LV13,RANK:410 )
|
-
-
16 楼
He GetProcAddressA
|
能力值:
( LV13,RANK:410 )
|
-
-
17 楼
那就在API的尾巴上断
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
谢谢,参考一下
|
能力值:
( LV6,RANK:90 )
|
-
-
19 楼
强帖留名..用到再详细看
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
不错不错不错
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
顶你一下呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
收藏了学习.......
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
ALT+B打开断点查看窗口,发现系统自动设置了一个断点One-shot,删除断点。 Breakpoints, item 0 Address=0055F29E keygen.<ModuleEntryPoint> Module=keygen Active=One-shot Disassembly=CALL keygen.0055F19A ALT+M打开内存镜像,CODE段F2下断,SHIFT+F9运行:
这些是不是要在输入框里,输入以上的命令? CTRL+N打开导入表,右击GetProcAddress,在导入表中跟随,双击: 0055F0C2 FF15 BC804D00 CALL NEAR DWORD PTR DS:[<&kernel32.GetPr>; 来到这里,下硬件执行断点 0055F0C8 09C0 OR EAX,EAX 0055F0CA 0F84 0D000000 JE keygen.0055F0DD 0055F0D0 8907 MOV DWORD PTR DS:[EDI],EAX 0055F0D2 8345 F4 04 ADD DWORD PTR SS:[EBP-C],4 0055F0D6 ^ E9 A6FFFFFF JMP keygen.0055F081 0055F0DB 0000 ADD BYTE PTR DS:[EAX],AL 0055F0DD 53 PUSH EBX 0055F0DE 89D8 MOV EAX,EBX 0055F0E0 E8 09000000 CALL keygen.0055F0EE
我的好像也不是断在最上面的CALL中,而且硬件断点也不能设?为什么呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
楼主大哥。我的程序就是这壳。。可是我没那技术脱。 可以帮我脱下么。 。
谢谢 QQ174327320
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
你们用的od是哪一个版本的,我的什么不了异常,下了硬件断点,跑半小时也是处理不了~~
|
|
|