<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
> <channel><title>Comments on: HASP Envelope</title> <atom:link href="http://www.secnews.pl/2009/05/06/hasp-envelope/feed/" rel="self" type="application/rss+xml" /><link>http://www.secnews.pl/2009/05/06/hasp-envelope/</link> <description>Reverse engineering, ochrona oprogramowania.</description> <lastBuildDate>Fri, 03 Feb 2012 09:56:39 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>By: ged_</title><link>http://www.secnews.pl/2009/05/06/hasp-envelope/comment-page-1/#comment-7636</link> <dc:creator>ged_</dc:creator> <pubDate>Sat, 09 May 2009 12:18:47 +0000</pubDate> <guid isPermaLink="false">http://www.secnews.pl/?p=388#comment-7636</guid> <description>// HASP HL import recoveryvar IATstart
var IATend
var IATptr
var lowrange
var highrange
var addr
var count
var pc// change this vars from target to targetmov IATstart, 1001000	// find these urself
mov IATend, 1001228
mov lowrange, 7e0000	// low range of redirected apis
mov highrange,7f0000	// ..
mov count, 0
mov IATptr, IATstart
sub IATptr, 4
next:
add IATptr, 4
cmp IATptr, IATend
je fin
mov addr, [IATptr]
cmp addr, lowrange
jb next
cmp addr, highrange
ja next
// here we know addr is redirected
eval &quot;Found redirected import at {addr}&quot;
log $RESULT
inc count
log count
mov eip, addr
ticnd &quot;eip &gt; 50000000&quot;
// boom, we break at GetTickCount
// get out
sti
sti
sti
sti
sti
stiticnd &quot;eip &gt; 50000000&quot;
// eip = address of original import
mov [IATptr], eip
mov pc, eip
gn eip
eval &quot;{addr} resolved to {pc} - {$RESULT}&quot;
log $RESULT
jmp next
fin:
eval &quot;{count} imports resolved&quot;
log $RESULT
retten ciag komend sti sluzy do przejscia przez spatchowany GetTickCount (jakis plugin mialem wlaczony), dlatego musialbys sprawdzic u siebie jak to bedzie dzialac.niektore API sa calkowicie emulowane, np GetProcAddress, wiec te trzeba jakos recznie rozpoznac.HASP HL to ogolnie gowno, ale ta emulacja importow rzeczywiscie im sie udala :)</description> <content:encoded><![CDATA[<p>// HASP HL import recovery</p><p>var IATstart<br /> var IATend<br /> var IATptr<br /> var lowrange<br /> var highrange<br /> var addr<br /> var count<br /> var pc</p><p>// change this vars from target to target</p><p> mov IATstart, 1001000	// find these urself<br /> mov IATend, 1001228<br /> mov lowrange, 7e0000	// low range of redirected apis<br /> mov highrange,7f0000	// ..</p><p> mov count, 0</p><p> mov IATptr, IATstart<br /> sub IATptr, 4<br /> next:<br /> add IATptr, 4<br /> cmp IATptr, IATend<br /> je fin<br /> mov addr, [IATptr]<br /> cmp addr, lowrange<br /> jb next<br /> cmp addr, highrange<br /> ja next</p><p> // here we know addr is redirected</p><p> eval &#8220;Found redirected import at {addr}&#8221;<br /> log $RESULT<br /> inc count<br /> log count</p><p> mov eip, addr<br /> ticnd &#8220;eip &gt; 50000000&#8243;</p><p> // boom, we break at GetTickCount<br /> // get out</p><p> sti<br /> sti<br /> sti<br /> sti<br /> sti<br /> sti</p><p> ticnd &#8220;eip &gt; 50000000&#8243;</p><p> // eip = address of original import</p><p> mov [IATptr], eip<br /> mov pc, eip<br /> gn eip<br /> eval &#8220;{addr} resolved to {pc} &#8211; {$RESULT}&#8221;<br /> log $RESULT</p><p> jmp next</p><p>fin:<br /> eval &#8220;{count} imports resolved&#8221;<br /> log $RESULT<br /> ret</p><p>ten ciag komend sti sluzy do przejscia przez spatchowany GetTickCount (jakis plugin mialem wlaczony), dlatego musialbys sprawdzic u siebie jak to bedzie dzialac.</p><p>niektore API sa calkowicie emulowane, np GetProcAddress, wiec te trzeba jakos recznie rozpoznac.</p><p>HASP HL to ogolnie gowno, ale ta emulacja importow rzeczywiscie im sie udala <img src='http://www.secnews.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> </item> </channel> </rss>
