放入ida发现程序入口函数只是调用了mscoree.dll!_CorExeMain, 先尝试一下能不能找到算法函数, 试了字符串引用, 函数大小排序, 随机点进函数观察都没找到;
只看到较长的几个函数有较大的switch case, 还有这样的东西: 怀疑是vm试试能不能动调, 发现windbg无法附加, frida可以但是hook函数后会发生crash;
由于将windbg设置为了jitdebugger, 所以crash时会弹windbg断下, 发现crash发生在htg_Crackme.exe启动的一个子进程程序, 路径在临时目录;
用System informer查看程序命令行参数为: 将9115cc6c-36dc-47bd-952a-bc16f093b625.exe复制出来发现运行它就会crash, 而且是python的图标, 怀疑是python打包的程序;
后来想明白crash应该是因为程序从自身将该exe复制出来在新进程运行, 而frida hook到了该exe的代码使得复制的exe携带了hook跳转到了不存在的地址导致crash.
之后换用dnspy发现可以调试;
在调试选项中勾上调试从进程内存加载的文件则可以看到完整的代码, 对代码的分析见注释:
然后是对序列号进行处理的函数: 比如12l34l56会变为113333555555.
之后在exe执行时断点可以拿到完整的exe, 使用pyinstxtractor解包与pycdc反编译得到其主要代码为: 为高精度的除法, 用用户名处理后的数字除以序列号处理后的数字并输出结果;
可以用示例用户名序列号得到的参数自行运行一次将输出保存为result.txt, 然后写python代码为: 输出很长小数点后全是很多0, 再存为文件看到整数部分, 再写代码转为序列号格式: 得到序列号为21l61l92022l71l51l61l92022l71l81l31l92022l81l61l51.enigma2:0000000140808F13 loc_140808F13: ; CODE XREF: sub_140808EF0+16↑p
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-288327.htm
[原创]KCTF 2025 第9题 智斗邪首wp
426 浏览
0 回复
暂无回复,快来抢沙发吧!