wjbg2022 发表于 2024-11-23 09:34

吾爱论坛帖子转存为pdf

地址:https://www.52pojie.cn/thread-1928246-1-1.html
各位大佬,这个帖子的推荐回答几张图片打不开,麻烦可以查看完整图片的大佬转为pdf发给我,谢谢!

cattie 发表于 2024-11-23 09:34

本帖最后由 cattie 于 2024-11-23 10:45 编辑

AHK (Auto Hotkey) 的程序要用想办法提取源码,而不是在调试器折腾。

```text
PE32
    操作系统: Windows(2000)
    链接程序: Microsoft Linker(10.00.40219)
    编译器: Microsoft Visual C/C++(16.00.40219)
    语言: C/C++
    工具: Visual Studio(2010)
    打包工具: UPX
    格式: Compiled AutoHotKey(1.0.4)
```

因为你的附件无法正确运行,我网上找了个 1.0.4 版本的。

然后随手找了几个反编译 ahk 的自动化工具,看起来都不能用的样子,只好手动看一下。

带壳运行,断 `FindResourceW` 或下方可以看到的其它 API,搜索字符串引用,找 `>AUTOHOTKEY SCRIPT<`:

```asm
004188E3 | 56               | push esi                              |
004188E4 | 6A 0A            | push A                              |
004188E6 | 68 FC964A00      | push _1.0.4.4A96FC                  | 4A96FC:L">AUTOHOTKEY SCRIPT<"
004188EB | 6A 00            | push 0                              |
004188ED | C74424 14 00000000 | mov dword ptr ss:,0         |
004188F5 | C74424 18 00000000 | mov dword ptr ss:,0         |
004188FD | C64424 1C 00       | mov byte ptr ss:,0            |
00418902 | FF15 10214A00      | call dword ptr ds:[<&FindResourceW>]|
00418908 | 8BF0               | mov esi,eax                           |
0041890A | 85F6               | test esi,esi                        |
0041890C | 74 7C            | je _1.0.4.41898A                      |
0041890E | 56               | push esi                              |
0041890F | 6A 00            | push 0                              |
00418911 | FF15 14214A00      | call dword ptr ds:[<&SizeofResource>] |
00418917 | 894424 0C          | mov dword ptr ss:,eax          |
0041891B | 85C0               | test eax,eax                        |
0041891D | 74 6B            | je _1.0.4.41898A                      |
0041891F | 56               | push esi                              |
00418920 | 6A 00            | push 0                              |
00418922 | FF15 18214A00      | call dword ptr ds:[<&LoadResource>]   |
00418928 | 85C0               | test eax,eax                        |
0041892A | 74 5E            | je _1.0.4.41898A                      |
0041892C | 50               | push eax                              |
0041892D | FF15 1C214A00      | call dword ptr ds:[<&LockResource>]   | 返回值 EAX 就是脚本地址
00418933 | 894424 08          | mov dword ptr ss:,eax          | ESP+8 是地址,ESP+C 是大小
```

找到下面的 `LockResource` 调用,在这里断下。

- EAX(以及之后赋值的 `ESP+8`)储存的是数据地址
- `ESP+C` 储存的是数据大小

![](https://imgsa.baidu.com/forum/pic/item/f3d3572c11dfa9ec46bb742924d0f703918fc173.png)

将这块内存提取出来(写脚本也好,用 HxD 等工具也好),保存到文件就是明文的代码了:

![](https://imgsa.baidu.com/forum/pic/item/622762d0f703918f71441ff4173d269759eec473.png)

---

把 1L 的可执行文件放到主程序目录下执行后可以正常执行的样子,操作方法是一样的。

不过这个 1.2.6 试用版没有 `> AUTOHOTKEY SCRIPT <` 这个标识符了,对 `LockResource` 下断点就能马上到了。

![](https://imgsa.baidu.com/forum/pic/item/b812c8fcc3cec3fd92e2854b9088d43f8794272b.png)

虽然代码的开头部分有点毛病,但后面的内容看起来未受影响;如果编辑器无法正常打开,将打开时的编码切换到 UTF-8 即可。

剩下的就是跟着代码研究它的算法就行了。脚本将多余的空格剔除掉了,找个格式化代码的插件处理下就好。

![](https://imgsa.baidu.com/forum/pic/item/c9fcc3cec3fdfc03fda4c186923f8794a4c2262b.png)

```ini
机器码 = 00000000000000000000000000000000
序列号 (1.2.6 试用版) = YzQ1-NDk5-ZWFl-MDk5-NmZh-YTk5-ZDUz-Yjk5-YzkwZDExNjAwOTIyYTU0NTMzOWU3NzEx
序列号 (1.0.4 未知版) = ZDc3-ZTk5-Nzlk-Nzk5-MTJh-YTk5-NzBm-Nzk5-YjA1NTExZDBiMjIyODZkMzMzNDY0NTEx
```

转载自https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=1928246&pid=50489314,已修复图像问题。
@爱飞的猫 有空的时候换一下链接,百度图床的挂掉了
分可以直接加给原作者(不用采纳我),仅作转载

cayuer 发表于 2024-11-23 09:38

此处@爱飞的猫

Lange1868 发表于 2024-11-23 09:40

我这里也显示参数错误http://forumupload.ru/uploads/001c/56/4a/2/923742.png

cayuer 发表于 2024-11-23 09:47

Lange1868 发表于 2024-11-23 09:40
我这里也显示参数错误

解铃还须系铃人 所以我@爱飞的猫

PLM369 发表于 2024-11-23 10:11

我这边看了,也是图片打不开,还是要去找原作者

Lange1868 发表于 2024-11-23 10:23

cayuer 发表于 2024-11-23 09:47
解铃还须系铃人 所以我@爱飞的猫

{:1_932:}我居然没想到这一层,是我肤浅了

wjbg2022 发表于 2024-11-23 10:58

cattie 发表于 2024-11-23 10:43
AHK (Auto Hotkey) 的程序要用想办法提取源码,而不是在调试器折腾。

```text


原作者已评分,我再采纳你的,谢谢!
页: [1]
查看完整版本: 吾爱论坛帖子转存为pdf