LoadLibrary
和GetProcAddress
二重奏以动态解析功能的恶意软件示例。调用此包装器后,立即调用存储在eax
中的值(即函数名)。字符串已加密,对我而言,反转加密算法太困难了。相反,我写了一个python脚本来设置断点,其中提到了call eax
指令。一切都很好,我从eax
获得了动态导入的函数的地址。问题是我需要它们可读。我知道如何通过调用ln address
将地址解析为widbg中的函数名称。但是我不想整天坐着,将所有649种进口产品一一复制到windbg
控制台上。我查找了windbg
的脚本功能,但无法编写任何可完成此工作的东西。感谢
#1 楼
我不知道我是否正确理解了您的查询,但是如果您想记录传递给getproc地址的函数名称,可以在windbg中这样记录它们:C:\>cdb calc
Microsoft (R) Windows Debugger Version 10.0.15063.468 X86
ntdll!LdrpDoDebuggerBreak+0x2c:
775605a6 cc int 3
0:000> bp KERNELBASE!GetProcAddress ".printf \"%ma\n\",poi(@esp+8);gc"
0:000> bl
0 e 756c6c81 0001 (0001) 0:**** KERNELBASE!GetProcAddress ".printf \"%ma\n\",poi(@esp+8);gc"
0:000> g
ImmWINNLSEnableIME
ImmWINNLSGetEnableStatus
ImmSendIMEMessageExW
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CtfImmTIMActivate
CtfImmRestoreToolbarWnd
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LpkPSMTextOut
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ModLoad: 740c0000 740d3000 C:\Windows\system32\dwmapi.dll
DwmIsCompositionEnabled
GetLayout
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ModLoad: 75590000 7559c000 C:\Windows\system32\CRYPTBASE.dll
SystemFunction036
CLSIDFromOle1Class
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ModLoad: 73b70000 73bac000 C:\Windows\system32\oleacc.dll
EventWrite
EventRegister
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BufferedPaintStopAllAnimations
ntdll!DbgBreakPoint:
774f4108 cc int 3
0:004> q
quit:
C:\>
afaik windbg还将地址解析为其函数名称
0:000> rM0
calc!WinMain+0x6b:
001316a0 ffd7 call edi {kernel32!GetModuleHandleWStub (7737ccac)}
评论
谢谢,但是我想特别知道如何将eax的值解析为函数名。例如,如果有0x77 ******之类的地址,则IDA会执行此操作。
–rustam Shirinov
17-10-28在20:58
据我所知,windbg还将地址解析为函数名称,请参见编辑
– blabb
17-10-29在3:48
我知道这一点。我希望windbg对所有649个地址执行此操作,而我不想手动执行。我也不知道idapython是否可行。
–rustam Shirinov
17-10-29在7:12
您的查询仍然不清楚,您必须在所有调用eax上设置断点,以进行模式匹配并收集模式匹配的地址,您可以使用#call * eax range然后使用.foreach,结果中没有任意方法任何调试器都可以自动中断呼叫eax,如果您知道每次最佳选择是获取getproc地址,则您需要根据一些手动工作来执行每条指令或预设bps
– blabb
17-10-29在7:40
发现windbg具有.for循环,并完成了工作谢谢。您的回答很有帮助。
–rustam Shirinov
17-10-29在9:19
评论
我查找了windbg的脚本功能,但无法编写任何能胜任的工作。您可以通过pykd将python与windbg一起使用