3DS Simple CIA Converter 小修改
软件本身挺好用的,除了每次都要点几次确认按钮。
这个小修改让软件直接使用默认设定的目录以及路径。
下载
下载下来的是补丁文件,请使用 WinIPS(或同类软件) 打上 ips 补丁,或使用 x64dbg 打上 1337 补丁。
具体修改
一共修改了四个地方。
首先是“建立 ncchinfo.bin 文件”的选择目录对话框:
00599B67 | 89 55 FC | mov dword ptr ss:[ebp-4],edx
00599B6A | EB 3C | jmp 3ds_simple_cia.599BA8
00599B6C | 90 | nop
00599B6D | 90 | nop
00599B6E | 90 | nop
因为软件默认提供了正确的 roms
目录,因此只需要把默认的目录传给程序就行。刚好此处缓冲区 [ebp-4]
为用户选择的目录,以及 edx
储存了当前的默认目录。
其次,是之后的 ncchinfo.bin
文件的选择。因为软件并没有拼接完整的路径出来,所以需要我们自己来拼。
00595844 | EB 0E | jmp 3ds_simple_cia.00595854 |
00595846 | 90 | nop |
00595847 | 8B 45 A4 | mov eax,dword ptr ss:[ebp-5C] |
0059584A | E8 1D 9B F7 FF | call 3ds_simple_cia.50F36C |
0059584F | 8B 45 A4 | mov eax,dword ptr ss:[ebp-5C] |
00595852 | 90 | nop |
00595853 | 90 | nop |
00595854 | 8D 45 90 | lea eax,dword ptr ss:[ebp-70] |
00595857 | BA 5C 5A 59 00 | mov edx,3ds_simple_cia.595A5C | 595A5C:L"\\ncchinfo.bin"
0059585C | E8 7B 2C E7 FF | call 3ds_simple_cia.4084DC |
00595861 | EB 1A | jmp 3ds_simple_cia.0059587D |
00595863 | 90 | nop |
00595864 | 05 94 00 00 00 | add eax,94 |
00595869 | BA B8 5A 59 00 | mov edx,3ds_simple_cia.595AB8 | 595AB8:L"bin"
0059586E | E8 05 22 E7 FF | call 3ds_simple_cia.407A78 |
00595873 | 8B 45 A4 | mov eax,dword ptr ss:[ebp-5C] |
00595876 | 90 | nop |
00595877 | 90 | nop |
00595878 | 90 | nop |
00595879 | 90 | nop |
0059587A | 90 | nop |
0059587B | 90 | nop |
0059587C | 90 | nop |
0059587D | 8D 45 90 | lea eax,dword ptr ss:[ebp-70] |
00595880 | BA CC 5A 59 00 | mov edx,3ds_simple_cia.595ACC | 595ACC:L"ncchinfo.bin"
00595885 | E8 52 2C E7 FF | call 3ds_simple_cia.4084DC |
0059588A | EB 18 | jmp 3ds_simple_cia.005958A4 |
0059588C | 90 | nop |
0059588D | 8B 45 A4 | mov eax,dword ptr ss:[ebp-5C] |
00595890 | 8B 10 | mov edx,dword ptr ds:[eax] |
00595892 | FF 52 54 | call dword ptr ds:[edx+54] | get file path
00595895 | 84 C0 | test al,al |
00595897 | 74 16 | je 3ds_simple_cia.5958AF |
00595899 | 8D 55 88 | lea edx,dword ptr ss:[ebp-78] |
0059589C | 8B 45 A4 | mov eax,dword ptr ss:[ebp-5C] |
0059589F | E8 A4 99 F7 FF | call 3ds_simple_cia.50F248 |
005958A4 | 8B 55 90 | mov edx,dword ptr ss:[ebp-70] | <- buffer 改了
其中 3ds_simple_cia.50F36C
是 Delphi 的字符串拼接函数,接口如下:
System::@UStrCat
eax = &dest
edx = src
然后顺便把原本的 Binary Files|*.bin|All Files (*.*)|*.*
改成了 \ncchinfo.bin
,和程序当前路径拼接起来。
最后,就是“转换 3ds 到 cia”按钮的目录选择了,和第一次修改一样的改法:
00599943 | 90 | nop | Select Directory Dialog
00599944 | 89 D2 | mov edx,edx |
00599946 | 84 C0 | test al,al |
00599948 | 74 13 | je 3ds_simple_cia.59995D |
0059994A | 8D 55 DC | lea edx,dword ptr ss:[ebp-24] |
0059994D | 8B 45 F8 | mov eax,dword ptr ss:[ebp-8] |
00599950 | E8 4F 70 F7 FF | call 3ds_simple_cia.5109A4 |
00599955 | 8B 45 EC | mov eax,dword ptr ss:[ebp-14] | <- ebp-24 = roms directory