朱朱你堕落了 发表于 2019-8-17 23:22

如何更好的判断DLL解码?

本帖最后由 朱朱你堕落了 于 2019-8-19 07:51 编辑

苏姐姐说的对,是我想得太复杂了,只判断一次即可。

吃饭睡觉打豆豆 发表于 2019-8-18 10:50

同样以易语言举例,调用GetVersion时,程序已经全部解码了。并不需要每一个都判断一次

朱朱你堕落了 发表于 2019-8-18 11:19

吃饭睡觉打豆豆 发表于 2019-8-18 10:50
同样以易语言举例,调用GetVersion时,程序已经全部解码了。并不需要每一个都判断一次

事实并不是这样的,加壳的,下GetVersion,还是会被断下来很多次的,要在my_GetVersion里面还得判断是否解码,因为前一两次或是前好几次并没有解码。如果楼主不信,可以测试下。

849814230 发表于 2019-8-18 11:42

.版本 2

ApiHook.暂停 (“kernel32”, “VirtualProtect”)
跳出 = 真
返回值 = API_VirtualProtect (lpAddress, dwSize, flNewProtect, lpflOldProtect)
' 如果真 (dwSize = 4096 且 flNewProtect = 32)

.如果真 (dwSize = 405314 且 flNewProtect = 32)



    ApiHook.卸载 (“kernel32”, “VirtualProtect”)
.如果真结束
.如果真 (跳出)

    ApiHook.继续 (“kernel32”, “VirtualProtect”)

.如果真结束

返回 (返回值)
' 009BF005    E8 05000000   call xbs.009BF00F

朱朱你堕落了 发表于 2019-8-18 12:10

849814230 发表于 2019-8-18 11:42
.版本 2

ApiHook.暂停 (“kernel32”, “VirtualProtect”)


楼主的意思是通过HOOK VirtualProtect函数来判断解码?

苏紫方璇 发表于 2019-8-18 14:52

我的想法和一楼是一样的,hook某个解码之后调用的api,判断一次是否解码就可以了,没必要每个都判断一次

冥界3大法王 发表于 2019-8-19 12:04

条件记录断点会交待参数;这个用得熟练,注册表监控工具可以暂时不用。
页: [1]
查看完整版本: 如何更好的判断DLL解码?