如何更好的判断DLL解码?
本帖最后由 朱朱你堕落了 于 2019-8-19 07:51 编辑苏姐姐说的对,是我想得太复杂了,只判断一次即可。 同样以易语言举例,调用GetVersion时,程序已经全部解码了。并不需要每一个都判断一次 吃饭睡觉打豆豆 发表于 2019-8-18 10:50
同样以易语言举例,调用GetVersion时,程序已经全部解码了。并不需要每一个都判断一次
事实并不是这样的,加壳的,下GetVersion,还是会被断下来很多次的,要在my_GetVersion里面还得判断是否解码,因为前一两次或是前好几次并没有解码。如果楼主不信,可以测试下。 .版本 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
849814230 发表于 2019-8-18 11:42
.版本 2
ApiHook.暂停 (“kernel32”, “VirtualProtect”)
楼主的意思是通过HOOK VirtualProtect函数来判断解码? 我的想法和一楼是一样的,hook某个解码之后调用的api,判断一次是否解码就可以了,没必要每个都判断一次 条件记录断点会交待参数;这个用得熟练,注册表监控工具可以暂时不用。
页:
[1]