SlideShare uma empresa Scribd logo
1 de 100
Globalcode – Open4education
SP15:Trilha Segurança
Globalcode – Open4education
Locks are so old-fashioned…
SP15:Trilha Segurança
Globalcode – Open4education
Anti-debugging: eu
não quero que você
mexa no meu código
Globalcode – Open4education
Wanderley Caloni
Sócio-Desenvolvedor da
Globalcode – Open4education
Wanderley Caloni
Sócio-Desenvolvedor da
Globalcode – Open4education
Agenda
Globalcode – Open4education
Agenda
Jabá Time!
Globalcode – Open4education
Onde sou? Quem estou?
2013-2014-…
Globalcode – Open4education
Onde sou? Quem estou?
2013-2014-…
Prova incontestável de autenticidade!
Globalcode – Open4education
Onde sou? Quem estou?
2000 e bolinha (??)
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Exemplos de projetos/clientes da Intelitrader/BitForge:
Globalcode – Open4education
Onde sou? Quem estou?
Exemplos de projetos/clientes da Intelitrader/BitForge:
Globalcode – Open4education
Onde sou? Quem estou?
Segurança da informação
Mercado financeiro
Software de baixo nível
Sistemas críticos
Linguagens
C, C++, .NET, VB6, Python, Delphi, Assembly,
ASP.NET, SQL, HTML5, PostGres, Oracle, Inglês,
Português, Russo, Polonês e todas as outras.
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
Onde sou? Quem estou?
Globalcode – Open4education
É isso aí pe-pe-pe-pe-pe…
Jabá End
Globalcode – Open4education
Agenda
Interpretação baseada em exceção
int 3
Ocupando a debug port
Debug Port
Detectando attach
Attach
Conclusão
Globalcode – Open4education
int 3
?
Globalcode – Open4education
int 3
int x = 3;
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
asm
Globalcode – Open4education
int 3
assembly
Globalcode – Open4education
int 3
assembly
Globalcode – Open4education
int 3
assem
Globalcode – Open4education
int 3
nop
nop
nop
nop
…
Globalcode – Open4education
int 3
nop
nop
int 3
nop
…
F9
Globalcode – Open4education
int 3
nop
nop
int 3
nop
…
Globalcode – Open4education
int 3
nop
nop
int 3
nop
…
Globalcode – Open4education
int 3
nop
nop
int 3
nop
…
EXCEPTION!!
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
Globalcode – Open4education
int 3
hardware
program
windows
CPU
T
H
R
E
A
D
nop
nop
nop
nop
int3
nop
nop
nop
…
Globalcode – Open4education
int 3
hardware
program
windows
CPU
T
H
R
E
A
D
nop
nop
nop
nop
int3
nop
nop
nop
…
Globalcode – Open4education
int 3
hardware
program
windows
CPU
T
H
R
E
A
D
nop
nop
nop
nop
int3
nop
nop
nop
…
INTERRUPT
Globalcode – Open4education
int 3
hardware
program
windows
CPU
T
H
R
E
A
D
nop
nop
nop
nop
int3
nop
nop
nop
…
Globalcode – Open4education
int 3
hardware
program
windows
CPU
T
H
R
E
A
D
nop
nop
nop
nop
int3
nop
nop
nop
…
Structured Exception Handling
Globalcode – Open4education
int 3
hardware
program
windows
CPU
T
H
R
E
A
D
nop
nop
nop
nop
int3
nop
nop
nop
…
try
{
}
catch() (ou except)
{
}
Globalcode – Open4education
int 3
program
try
{
}
catch() (ou except)
{
}
debugger
Globalcode – Open4education
int 3
program
try
{
}
catch() (ou except)
{
}
invasor
Globalcode – Open4education
int 3
program
try
{
}
catch() (ou except)
{
}
program
Globalcode – Open4education
int 3
program
try
{
}
catch() (ou except)
{
}
program
?
Globalcode – Open4education
int 3
try
{
// nonsense
int 3 (DebugBreak())
}
except( ExceptFilter() )
{
// nonsense
}
ExceptFilter()
{
// here is the gold
}
Globalcode – Open4education
int 3
try
{
// nonsense
int 3 (DebugBreak())
}
except( ExceptFilter() )
{
// nonsense
}
ExceptFilter()
{
// here is the gold
}
Globalcode – Open4education
int 3
try
{
// nonsense
int 3 (DebugBreak())
}
except( ExceptFilter() )
{
// nonsense
}
ExceptFilter()
{
// here is the gold
}
Globalcode – Open4education
int 3
“Run, code, run!” – No One
Globalcode – Open4education
int 3
Problemas:
Multithreading (e lock, e mutex, e inferno).
Fluxo não-contínuo de execução
Performance
Fica feio
Globalcode – Open4education
int 3: v. 2
Long Jump Silver!
Globalcode – Open4education
int 3: v. 2
Code
Code
Code
Code
SetLongJump
Code
Code
Code
…
Jump!
Globalcode – Open4education
int 3: v. 2
Code
Code
Code
Code
SetLongJump
Code
Code
Code
…
Jump!
Globalcode – Open4education
int 3: v. 2
Code
Code
Code
Code
SetLongJump
Code
Code
Code
…
Jump!
Globalcode – Open4education
int 3: v. 2
Code
Code
Code
Code
SetLongJump
Code
Code
Code
…
Jump!
Globalcode – Open4education
int 3: v. 2
Code
Code
Code
Code
SetLongJump
Code
Code
Code
…
Jump!
Globalcode – Open4education
int 3: v. 2
Code
Code
Code
Code
SetLongJump
Code
Code
Code
…
Jump!
Globalcode – Open4education
int 3: v. 2
#define ANTIDEBUG(code)
{
jmp_buf env;
if( setjmp(env) == 0 )
{
LongJmp(&env);
}
else
{
code;
}
}
Globalcode – Open4education
int 3: v. 2
#define ANTIDEBUG(code)
{
jmp_buf env;
if( setjmp(env) == 0 )
{
LongJmp(&env);
}
else
{
code;
}
}
Globalcode – Open4education
int 3: v. 2
DWORD LongJmp(jmp_buf* env)
{
__try
{
__asm int 3
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
longjmp(*env, 1);
}
return ERROR_SUCCESS;
}
Globalcode – Open4education
int 3: v. 2
DWORD LongJmp(jmp_buf* env)
{
__try
{
__asm int 3
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
longjmp(*env, 1);
}
return ERROR_SUCCESS;
}
Globalcode – Open4education
int 3: v. 2
“Run, Forrest, run!” – Long Dong
Globalcode – Open4education
Debug Port
Globalcode – Open4education
Debug Port
Lock!
Globalcode – Open4education
Debug Port
program
try
{
}
catch() (ou except)
{
}
debugger
Globalcode – Open4education
Debug Port
program
try
{
}
catch() (ou except)
{
}
debugger
Debug Port
Globalcode – Open4education
Debug Port
Como é o código de um depurador:
Globalcode – Open4education
Debug Port
Como é o código de um depurador:
Loop:
WaitForDebugEvent(&debugEvt, INFINITE);
ContinueDebugEvent(pid, tid, DBG_SBRUBLES);
Globalcode – Open4education
Debug Port
Como é o código de um depurador:
Loop:
WaitForDebugEvent(&debugEvt, INFINITE);
ContinueDebugEvent(pid, tid, DBG_SBRUBLES);
That’s it!
Globalcode – Open4education
Debug Port
program
Debug Port
Globalcode – Open4education
Debug Port
program
Debug Port
invasor
Globalcode – Open4education
Debug Port
program
Debug Port
invasor
WTF? Access Denied!
Globalcode – Open4education
Debug Port
“Knock
Knock
Knockin'
on debug's port”
Globalcode – Open4education
Debug Port
“Knock
Knock
Knockin'
on debug's port”
- Bob Dybug
Globalcode – Open4education
Attach
Did you say…
Globalcode – Open4education
Attach
assembly
????????
Globalcode – Open4education
Attach
// opcodes to run a jump to
// the function AntiAttachAbort
BYTE jmpToAntiAttachAbort[] =
{
0xB8, 0xCC, 0xCC, 0xCC, 0xCC,
// mov eax, 0xCCCCCCCC
0xFF, 0xE0
// jmp eax
};
Globalcode – Open4education
Attach
program
invasor
Globalcode – Open4education
Attach
program
invasor
Globalcode – Open4education
Attach
program
invasor
T
H
R
E
A
D
ntdll!DbgUiRemoteBreakin
Globalcode – Open4education
Attach
ntdll!DbgUiRemoteBreakin
773F10A0 push 8
773F10A2 push 773F10F8h
773F10A7 call __SEH_prolog4 (77384420h)
773F10DB xor eax,eax
773F10DD inc eax
773F10DE ret
773F10DF mov esp,dword ptr [ebp-18h]
773F10E2 mov dword ptr [ebp-4],0FFFFFFFEh
773F10E9 push 0
773F10EB call RtlExitUserThread (77362B10h)
773F10F0 int 3
Globalcode – Open4education
Attach
ntdll!DbgUiRemoteBreakin
773F10A0 push 8
773F10A2 push 773F10F8h
773F10A7 call __SEH_prolog4 (77384420h)
773F10DB xor eax,eax
773F10DD inc eax
773F10DE ret
773F10DF mov esp,dword ptr [ebp-18h]
773F10E2 mov dword ptr [ebp-4],0FFFFFFFEh
773F10E9 push 0
773F10EB call RtlExitUserThread (77362B10h)
773F10F0 int 3
Globalcode – Open4education
Attach
ntdll!DbgUiRemoteBreakin
Globalcode – Open4education
Attach
ntdll!DbgUiRemoteBreakin
773F10A0 jmp NaNaNiNaNaaaaooooo
773F10A7 call __SEH_prolog4 (77384420h)
773F10DB xor eax,eax
773F10DD inc eax
773F10DE ret
773F10DF mov esp,dword ptr [ebp-18h]
773F10E2 mov dword ptr [ebp-4],0FFFFFFFEh
773F10E9 push 0
773F10EB call RtlExitUserThread (77362B10h)
773F10F0 int 3
Globalcode – Open4education
Attach
ntdll!DbgUiRemoteBreakin
773F10A0 jmp AntiAttachAbort
773F10A7 call __SEH_prolog4 (77384420h)
773F10DB xor eax,eax
773F10DD inc eax
773F10DE ret
773F10DF mov esp,dword ptr [ebp-18h]
773F10E2 mov dword ptr [ebp-4],0FFFFFFFEh
773F10E9 push 0
773F10EB call RtlExitUserThread (77362B10h)
773F10F0 int 3
Globalcode – Open4education
Attach
AntiAttachAbort?
Globalcode – Open4education
Attach
AntiAttachAbort?
Globalcode – Open4education
Attach
AntiAttachAbort?
TerminateProcess
Globalcode – Open4education
Attach
Globalcode – Open4education
Conclusão
Globalcode – Open4education
Conclusão
Globalcode – Open4education
Conclusão
Técnicas anti-debugging são complicadas
TODO: Encapsular em uma LIB
Nenhuma técnica é perfeita
Performance, complexidade, instabilidade…
Linus Torvalds pode aparecer em um slide de um
MVP e ele não será expulso da congregação
O contrário não é verdadeiro
Globalcode – Open4education
Contato
wanderley@caloni.com.br
twitter
saite
e-mail
Globalcode – Open4education
Agradecimentos

Mais conteúdo relacionado

Semelhante a Antidebugging eu não quero que você mexa no meu código

Eu quero aprender .NET
Eu quero aprender .NETEu quero aprender .NET
Eu quero aprender .NET
Thiago Coelho
 

Semelhante a Antidebugging eu não quero que você mexa no meu código (20)

2º Femug mga - Automation Test
2º Femug mga -  Automation Test 2º Femug mga -  Automation Test
2º Femug mga - Automation Test
 
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...
 
Node.js cluster
Node.js clusterNode.js cluster
Node.js cluster
 
TDC São Paulo 2016 - Automation Test With Docker
TDC São Paulo 2016 - Automation Test With DockerTDC São Paulo 2016 - Automation Test With Docker
TDC São Paulo 2016 - Automation Test With Docker
 
resolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bddresolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bdd
 
Programando o ESP8266 com Python
Programando o ESP8266 com PythonProgramando o ESP8266 com Python
Programando o ESP8266 com Python
 
Eu quero aprender .NET
Eu quero aprender .NETEu quero aprender .NET
Eu quero aprender .NET
 
Ensuring Software Quality in the cloud
Ensuring Software Quality in the cloudEnsuring Software Quality in the cloud
Ensuring Software Quality in the cloud
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
effective java
effective javaeffective java
effective java
 
Wtf per lineofcode
Wtf per lineofcodeWtf per lineofcode
Wtf per lineofcode
 
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneWhen Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
 
Instrumenting Go applications with Prometheus
Instrumenting Go applications with PrometheusInstrumenting Go applications with Prometheus
Instrumenting Go applications with Prometheus
 
Pwning mobile apps without root or jailbreak
Pwning mobile apps without root or jailbreakPwning mobile apps without root or jailbreak
Pwning mobile apps without root or jailbreak
 
Fuzzing - Part 2
Fuzzing - Part 2Fuzzing - Part 2
Fuzzing - Part 2
 
Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016
Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016
Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6
 
Compartilhando código entre Windows Phone e o Windows 8
Compartilhando código entre Windows Phone e o Windows 8Compartilhando código entre Windows Phone e o Windows 8
Compartilhando código entre Windows Phone e o Windows 8
 
A CTF Hackers Toolbox
A CTF Hackers ToolboxA CTF Hackers Toolbox
A CTF Hackers Toolbox
 
A look inside the European Covid Green Certificate (Codemotion 2021)
A look inside the European Covid Green Certificate (Codemotion 2021)A look inside the European Covid Green Certificate (Codemotion 2021)
A look inside the European Covid Green Certificate (Codemotion 2021)
 

Mais de Wanderley Caloni

Mais de Wanderley Caloni (11)

Co co-co-co-co-corrotinas
Co co-co-co-co-corrotinasCo co-co-co-co-corrotinas
Co co-co-co-co-corrotinas
 
Vcpkg e vc td a ver
Vcpkg e vc td a verVcpkg e vc td a ver
Vcpkg e vc td a ver
 
Stack overflow
Stack overflowStack overflow
Stack overflow
 
Apresentação da BitForge
Apresentação da BitForgeApresentação da BitForge
Apresentação da BitForge
 
Debug Remoto com WinDbg: Um Resumo
Debug Remoto com WinDbg: Um ResumoDebug Remoto com WinDbg: Um Resumo
Debug Remoto com WinDbg: Um Resumo
 
GitIndex e SourceServer
GitIndex e SourceServerGitIndex e SourceServer
GitIndex e SourceServer
 
Entendendo a Compilação
Entendendo a CompilaçãoEntendendo a Compilação
Entendendo a Compilação
 
Engenharia Reversa para Principiantes
Engenharia Reversa para PrincipiantesEngenharia Reversa para Principiantes
Engenharia Reversa para Principiantes
 
Como Não Desenvolver Pôquer Online ou Como Explorar a Pseudo-Aleatoriedade
Como Não Desenvolver Pôquer Online ou Como Explorar a Pseudo-AleatoriedadeComo Não Desenvolver Pôquer Online ou Como Explorar a Pseudo-Aleatoriedade
Como Não Desenvolver Pôquer Online ou Como Explorar a Pseudo-Aleatoriedade
 
Depurando até o fim do mundo: técnicas e truques de WinDbg
Depurando até o fim do mundo: técnicas e truques de WinDbgDepurando até o fim do mundo: técnicas e truques de WinDbg
Depurando até o fim do mundo: técnicas e truques de WinDbg
 
Patch de Emergencia
Patch de EmergenciaPatch de Emergencia
Patch de Emergencia
 

Último

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Último (20)

WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 

Antidebugging eu não quero que você mexa no meu código