能力值:
( LV2,RANK:10 )
|
-
-
2 楼
弹窗代码上面有判断紧接着跳转: 0000000140003F34 | 83FE 03 | cmp esi,0x3 | 0000000140003F37 | 0F86 C7000000 | jbe abareplace64.140004004 | 将此处跳转改为 jmp 后弹窗跳过,但发现 3 次限制未解除 在 API WriteFile 下断,定位到写入替换字符的指令: 0000000140029B9C | FF15 96B70200 | call qword ptr ds:[<WriteFile>] | 堆栈回溯一级找到调用 call,此 call 只执行了 3 次,猜想这里是关键点: 000000014000FB7B | E8 809C0100 | call <abareplace64.sub_140029800> | 向上看有判断跳过这个 call: 000000014000F99A | 41:85C4 | test r12d,eax | 000000014000F99D | 74 04 | je abareplace64.14000F9A3 | 000000014000F99F | 45:8957 24 | mov dword ptr ds:[r15+0x24],r10d | 000000014000F9A3 | 41:837F 24 00 | cmp dword ptr ds:[r15+0x24],0x0 | 000000014000F9A8 | 0F84 59020000 | je abareplace64.14000FC07 | 改为: 000000014000F99D | EB 04 | jmp abareplace64.14000F9A3 | 3 次替换限制解除
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
感谢指导 但不明白的是,为何说je abareplace64.14000F9A3是跳过下面很远的这个call <abareplace64.sub_140029800> 呢? 通过调试得到的?直观看跳转关系,好像看不出来
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
huangyalei
弹窗代码上面有判断紧接着跳转:
0000000140003F34 | 83FE 03 | cmp esi,0x3 ...
请教不知您是如何调试的?我没法调试(用的是x64dbg),经常调试到半途就停止了!上述的弹窗call,是通过附加,再查看堆栈得到的。 像您这样下断API后,如何才能顺利调试呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
AbaReplace32 的也搞定了,依葫芦画瓢搞出来的,再次感谢! 32位的改法稍微有点不一样;AbaReplace32.exe(3 次替换限制解除): 0040CB9D | 854424 1C | test dword ptr ss:[esp+1C],eax | =》test dword ptr ss:[esp+1C],0x1
但调试如何顺利进行到底,还没搞明白
最后于 2024-2-15 07:11
被martin325编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
martin325
感谢指导
但不明白的是,为何说je abareplace64.14000F9A3是跳过下面很远的这个call 呢?
通过调试得到的?直观看跳转关系,好像看不出来
是下面的 je abareplace64.14000FC07 跳过 改 je abareplace64.14000F9A3 是为了满足上面指令跳转的条件
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
martin325
请教不知您是如何调试的?我没法调试(用的是x64dbg),经常调试到半途就停止了!上述的弹窗call,是通过附加,再查看堆栈得到的。
像您这样下断API后,如何才能顺利调试呢?
不明白你为何不能顺利调试,这个程序又没有反调试 下了断点,执行到断点的时候应该会断下的 如果断下后不能继续执行,你把所有线程恢复看看 我记得上面的代码是在子线程中执行的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
martin325
AbaReplace32 的也搞定了,依葫芦画瓢搞出来的,再次感谢!32位的改法稍微有点不一样;AbaReplace32.exe(3 次替换限制解除):0040CB9D&nb ...
这种见子打子的方式不是最好的修改方式,最好是找到判断是否注册的地方,可能会有一个全局变量,上面三处限制(或许还会有其他限制)通过这个全局变量判断是否注册,把这个全局变量改为已注册就可以了,思路给你了,是否可行就留给你自己分析了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
huangyalei
是下面的 je abareplace64.14000FC07 跳过
改 je abareplace64.14000F9A3 是为了满足上面指令跳转的条件
哦,这个我后面仔细看了后,领会了。所以也知道了32位的修改之法。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我也不知道啊,我用的x64dbg_2024-01-06_21-29,还是最新版,没做改动的。下断点后,运行调试,软件界面出来后,在软件界面选择搜索文件夹后,调试就自动卡壳了,再也进行不下去,那个替换的操作出不来了,就是软件程序最右下角的replace按钮不会出来
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
huangyalei
这种见子打子的方式不是最好的修改方式,最好是找到判断是否注册的地方,可能会有一个全局变量,上面三处限制(或许还会有其他限制)通过这个全局变量判断是否注册,把这个全局变量改为已注册就可以了,思路给你了, ...
老大,我知道这个思路,但碍于水平,暂时找不到判断是否注册的地方哎。只好摸着石头过河了。暂时没发现其他障碍。
最后于 2024-2-15 09:35
被martin325编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
它是通过网络注册的,我猜想试用版程序里,没有判断全局注册的修改点。
|
|
|