-
-
[原创]WinCHM 再探索!
-
发表于:
2022-9-28 17:51
7121
-
https://bbs.pediy.com/thread-274560.htm
看到zenix大佬发帖后,有感而发。
从下面这个网站下载安装以后,将winchm.exe拖入IDA。
http://www.softany.com/winchm/
根据zenix大佬的汇编描述,这里有个常量0x2705,然后我们在IDA通过搜索立即数,立刻定位到了关键代码位置。
立即数搜索框
下面是搜索结果
根据官网的购买界面,确实是证书类型。
看不太明白,上Windbg和retsync。
IDA 启动ret-sync插件,然后windbg执行!sync
接下来输入用户名和注册码,windbg就能断下来了。
与此同时ida会进行同步
此刻进行调试中,常用命令
边调试边看,调试时发现这里有个小循环。
F5后也就是这样
我们的算完之后是0xbd6
试着改动一下
g运行,发现注册成功了。
此时重新运行后,windbg需要重新下断才能断下来,而且windbg preview的寄存器窗口是错误的。
例如eax寄存器
此时可以确定的是,我们的寄存器eax代表v2,也就是注册码的长度,ebp-8取出来的是注册码的地址。
由dc可以看出字符是按两个字节编码的。因此我们重命名后就是这样
用C++实现一下就是这样
接下来可以写个标准版注册机。
注册
Ok!
https://github.com/BeneficialCode/WinCHMStandardKeygen
0058CB2A
BB
0F270000
mov ebx,
0x270F
;
9999
用户,也就是无限用户授权
0058CB2A
BB
0F270000
mov ebx,
0x270F
;
9999
用户,也就是无限用户授权
!process
0
0
winchm.exe
!process ffffa10d782cd300
.
reload
.process
/
i ffffa10d782cd300
bp
0058C9E4
.load F:\github\ret
-
sync\ext_windbg\sync\x64\Release\sync.dll
!process
0
0
winchm.exe
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!