81 lines
1.0 KiB
Plaintext
81 lines
1.0 KiB
Plaintext
'32bit x86
|
|
|
|
static string Report
|
|
|
|
|
|
macro ReportStack(n)
|
|
'===================
|
|
|
|
'
|
|
scope
|
|
'
|
|
static sys stack[0X100],stackptr,e
|
|
'
|
|
'CAPTURE IMAGE OF UP TO 256 ENTRIES
|
|
'
|
|
'
|
|
mov eax,n
|
|
cmp eax,0x100
|
|
(
|
|
jle exit
|
|
mov eax,0x100 'UPPER LIMIT
|
|
)
|
|
mov e,eax
|
|
mov stackptr,esp
|
|
lea edx,stack
|
|
mov ecx,e
|
|
mov esi,esp
|
|
(
|
|
mov eax,[esi]
|
|
mov [edx],eax
|
|
add esi,4
|
|
add edx,4
|
|
dec ecx
|
|
jg repeat
|
|
)
|
|
sys i
|
|
string cr=chr(13)+chr(10), tab=chr(9)
|
|
'
|
|
for i=1 to e
|
|
report+=hex(stackptr+(i-1)*4,8) tab hex(i-1,2) tab hex(stack[i],8) cr
|
|
next
|
|
'
|
|
end scope
|
|
'
|
|
end macro
|
|
|
|
'====
|
|
'TEST
|
|
'====
|
|
|
|
function foo()
|
|
'=============
|
|
|
|
push 0x44556677
|
|
push 0x33445566
|
|
push 0x22334455
|
|
push 0x11223344
|
|
ReportStack(8)
|
|
|
|
end function
|
|
|
|
Report+="Trace inside foo
|
|
"
|
|
foo()
|
|
print report
|
|
'putfile "s.txt",Report
|
|
|
|
/*
|
|
RESULT:
|
|
|
|
Trace inside foo
|
|
0017FE00 00 11223344
|
|
0017FE04 01 22334455
|
|
0017FE08 02 33445566
|
|
0017FE0C 03 44556677
|
|
0017FE10 04 005EAB1C
|
|
0017FE14 05 0017FE40
|
|
0017FE18 06 10002D5F
|
|
0017FE1C 07 00000000
|
|
*/
|