dahaiwubian 发表于 2023-11-14 13:24:39

这几句汇编语言是怎么回事?

本帖最后由 dahaiwubian 于 2023-11-14 13:54 编辑

脱壳跟踪到这里,这是oep入口前的最后代码,如果在*02CB1F16*按F8,程序就飞了,如果单步F7到*02CB1F3E*的ret就死了,查看OD的记录说是int3断点。我想搞明白壳的作者在这里搞了什么把戏,怎么能步进跟进去到oep呢?


02CB1F16   | E8 01000000       | call 2CB1F1C                                       |
02CB1F1B   | 8183 C4043104 24E | add dword ptr ds:,1E824               |
02CB1F25   | 0000            | add byte ptr ds:,al                           | eax:EntryPoint
02CB1F27   | 68 83C4048B       | push 8B04C483                                    |
02CB1F2C   | 05 D484CB02       | add eax,2CB84D4                                    | eax:EntryPoint
02CB1F31   | E8 02000000       | call 2CB1F38                                       |
02CB1F36   | E8 6883C404       | call 78FA2A3                                       |
02CB1F3B   | 010424            | add dword ptr ss:,eax                         | eax:EntryPoint
02CB1F3E   | C3                | ret                                                |
02CB1F3F   | C3                | ret

下面是F7跟进的代码

02CB1F1C   | 83C4 04         | add esp,4                                          |
02CB1F1F   | 310424            | xor dword ptr ss:,eax                         | eax:EntryPoint
02CB1F22   | E8 01000000       | call 2CB1F28                                       |
02CB1F27   | 68 83C4048B       | push 8B04C483                                    |
02CB1F2C   | 05 D484CB02       | add eax,2CB84D4                                    | eax:EntryPoint
02CB1F31   | E8 02000000       | call 2CB1F38                                       |
02CB1F36   | E8 6883C404       | call 78FA2A3                                       |
02CB1F3B   | 010424            | add dword ptr ss:,eax                         | eax:EntryPoint
02CB1F3E   | C3                | ret                                                |

02CB1F28   | 83C4 04         | add esp,4                                          |
02CB1F2B   | 8B05 D484CB02   | mov eax,dword ptr ds:                     | eax:EntryPoint
02CB1F31   | E8 02000000       | call 2CB1F38                                       |
02CB1F36   | E8 6883C404       | call 78FA2A3                                       |
02CB1F3B   | 010424            | add dword ptr ss:,eax                         | eax:EntryPoint
02CB1F3E   | C3                | ret                                                |

02CB1F38   | 83C4 04         | add esp,4                                          |
02CB1F3B   | 010424            | add dword ptr ss:,eax                         | eax:EntryPoint
02CB1F3E   | C3                | ret

另外,我发现只要是隐藏call(比如,上面的call,每一个call指向的地址,都在两个地址之间,)按F8都会飞。

LCC 发表于 2023-11-14 13:31:56

好熟悉的软件,EntryPoint,具体怎么回事不清楚,看几句代码不知道什么意思

dahaiwubian 发表于 2023-11-14 13:53:00

本帖最后由 dahaiwubian 于 2023-11-14 14:21 编辑

LCC 发表于 2023-11-14 13:31
好熟悉的软件,EntryPoint,具体怎么回事不清楚,看几句代码不知道什么意思
软件是ude(超级加密3000),asprotect2.78的壳,附加数据会放到00030000等低于00400000基址的地方,反逆向做的非常到位,弄了好几个月也没脱壳

LCC 发表于 2023-11-14 14:16:51

如果只是这几句代码,那你就慢慢分析吧,真帮不到你,没软件

dahaiwubian 发表于 2023-11-14 14:25:24

LCC 发表于 2023-11-14 14:16
如果只是这几句代码,那你就慢慢分析吧,真帮不到你,没软件

超级加密3000(https://down.jiamisoft.com/down_new_soft/ude.zip)

zenix 发表于 2023-11-15 15:05:45

这是一种花指令。
遇到 E8 01000000 ?? 83 C4 04 , 可以把这段代码全部 Nop 掉。
遇到 E8 02000000 ?? ?? 83 C4 04 , 也可以把这段代码全部 Nop 掉。

然后,代码就清爽了。

dahaiwubian 发表于 2023-11-15 17:31:43

zenix 发表于 2023-11-15 15:05
这是一种花指令。
遇到 E8 01000000 ?? 83 C4 04 , 可以把这段代码全部 Nop 掉。
遇到 E8 02000000 ?? ? ...

我试试看能不能行
页: [1]
查看完整版本: 这几句汇编语言是怎么回事?