请编写DLL注入后Patch掉自校验
本帖最后由 苏紫方璇 于 2024-2-1 21:22 编辑zp1.4.9设置只选:校验文件。
下VirtualAlloc和MapViewOfFile断点,运行程序,在VirtualAlloc下断下,程序申请的内存为00AE0000
取消VirtualAlloc,运行,这时断在MapViewOfFile处,返回地址00D50000
再取消MapViewOfFile断点
下断 hr eax,运行程序,在断下位置的段尾ret处下断,之后F7到达这里:
00B06530 3B48 46 cmp ecx,dword ptr ds:
这里是校验值比较,可以修改使其相同而跳过自校验,先不修改,继续向下走,
到达目标位置:
00B0B8CB^\0F84 F58AFFFF je 00B043C6 ; 目标位置
手工修改为jne就跳过自校验了。
偏移值:00B0B8CB - 00AE0000 = 0x2B8CB
实现写一个DLL修改此处00B0B8CB的jz为jne,提供C++源码。
因为网络问题,图片没有上传成功,和程序一起打包:
https://www.123pan.com/s/YL29-nyyOh.html
朱朱你堕落了 发表于 2024-1-30 19:08
少侠,zp使用了MapViewOfFile函数,你根据他这个函数特性HOOK很巧妙,但是如果这不是ZP壳,那么这个HOOK ...
第一种比较通用的方法就是在VirtualAlloc 获取地址之后,在je 跳转位置下个硬件执行断点或写入断点,添加VEH来接受异常,修改跳转。
第二种的话你调试器定位它je 代码被写入位置,在0x004BC4D1 位置movsb 会写入代码,你也可以hook这里。如果你观察movsb 前后的代码可以看到 原来的代码是被压缩存储在exe文件里面,你分析压缩算法,直接修改exe文件里面的值也行 https://www.123pan.com/s/NkeHjv-wBX0H.html 苏紫方璇版主大佬也悬赏? 无闻无问 发表于 2024-1-30 16:48
苏紫方璇版主大佬也悬赏?
那必须的呀,不懂就问呗,最近被某人拉进脱壳深坑,一脸懵逼中 本帖最后由 董督秀 于 2024-1-30 18:36 编辑
{:1_937:} 佩服,一楼大佬的代码简洁而高效。自己也尝试过其他写法,感觉很复杂。 本帖最后由 朱朱你堕落了 于 2024-1-30 19:43 编辑
少年持剑 发表于 2024-1-30 16:38
https://www.123pan.com/s/NkeHjv-wBX0H.html
少侠,zp使用了MapViewOfFile函数,你根据他这个函数特性HOOK很巧妙,但是如果这不是ZP壳,没有使用MapViewOfFile函数,那么这个HOOK位置如何找?怎么判断解码?
或这么说吧,如果在本例中你可以HOOK VirtualAlloc,但不HOOK MapViewOfFile,HOOK位置找哪里,代码怎么写? MapViewOfFile 段尾retn处下断,获得eax的值,再进行hr eax,运行断下的这个位置,也就是当前eip,这个值加上0x19CA6,就到了je的位置,我不知道是不是个例,反正我电脑上是这样可以算出来,接下来的事情我跟一楼想法差不多 veh解决 bester 发表于 2024-1-30 20:38
MapViewOfFile 段尾retn处下断,获得eax的值,再进行hr eax,运行断下的这个位置,也就是当前eip,这个值加上0x1 ...
兄弟你可以试试,并不容易实现,很多坑的。 明明可以直接在文件里修改校验和,静态修改可以,加载进内存后修改更可以,随便hook一个系统函数就能实现。你dll注入后,要判断解码完成,要计算动态地址,不嫌麻烦吗?破解就是要用最简单的技术,达到一剑封喉的效果。
页:
[1]
2